CI/CD с GitHub Actions
При работе над своим проектом я столкнулся с вопросом автоматизации деплоймента и настройки CI/CD для front- и back-end приложений. Т.к. до этого я работал с CI/CD только на GitLab, я начал присматриваться к доступным опциям для github-репозиториев. На рынке сейчас существует достаточно вариантов, и open-source JenkinsCI, и коммерческие варианты, такие как CircleCI & TravisCI.
Но мое внимание привлекло решение от самого github — GitHub Actions. Это софтина которая помогает настроить жизненный цикл разработки, и из коробки поддерживается в каждом репозитории.
Немного разобравшись с синтаксисом .yml файлов и самим workflow, я реализовал достаточно примитивный CI/CD, который позволяет мне в течении минуты обновлять мое приложение на продакшене.
Пайплайн
Для автоматизации деплоймента, мне было необходимо реализовать следующий флоу:
- Подключиться по ssh к моему VPS
- Переместиться в нужную директорию
- Сделать git pull актуальной мастер ветки
- Запустить скрипт из Makefile
- …
- PROFIT!
GitHub Actions не умеет в ssh, по этому пришлось искать решение, и сразу же я наткнулся на этот репозиторий.
Тут же я накидал следующий workflow.yml файл:
Для подключения по ssh, вам необходимо передать свой приватный ключ параметром key: ${{ secrets.SSHKEY }}. SSHKEY — это кастомное название, вы можете назвать этот секрет как угодно.
Для этого сгенерируйте пару ключей, если вы еще этого не сделали, с помощью команды ssh-keygen -t rsa, а после этого скопируйте ваш приватный ключ с помощью cat ~/.ssh/id_rsa и создайте секрет.
Секреты, которые передаются через ${{ }} синтаксис можно создать тут:
Вот так просто можно быстро настроить сносный CI/CD для вашего приложения и автоматизировать рутинные задачи.
Не теряйте время на роботу, которую можно и нужно автоматизировать.
А чтобы не пропускать интересный материал по разработке, подписывайтесь на мой Telegram канал, в котором я делюсь знаниями и опытом.
Чести и удачи!