CI/CD с GitHub Actions

Maksim Zhashkevych
2 min readMar 27, 2020

--

При работе над своим проектом я столкнулся с вопросом автоматизации деплоймента и настройки CI/CD для front- и back-end приложений. Т.к. до этого я работал с CI/CD только на GitLab, я начал присматриваться к доступным опциям для github-репозиториев. На рынке сейчас существует достаточно вариантов, и open-source JenkinsCI, и коммерческие варианты, такие как CircleCI & TravisCI.

Но мое внимание привлекло решение от самого github — GitHub Actions. Это софтина которая помогает настроить жизненный цикл разработки, и из коробки поддерживается в каждом репозитории.

Немного разобравшись с синтаксисом .yml файлов и самим workflow, я реализовал достаточно примитивный CI/CD, который позволяет мне в течении минуты обновлять мое приложение на продакшене.

Пайплайн

Для автоматизации деплоймента, мне было необходимо реализовать следующий флоу:

  1. Подключиться по ssh к моему VPS
  2. Переместиться в нужную директорию
  3. Сделать git pull актуальной мастер ветки
  4. Запустить скрипт из Makefile
  5. PROFIT!

GitHub Actions не умеет в ssh, по этому пришлось искать решение, и сразу же я наткнулся на этот репозиторий.

Тут же я накидал следующий workflow.yml файл:

пример workflow.yml файла

Для подключения по ssh, вам необходимо передать свой приватный ключ параметром key: ${{ secrets.SSHKEY }}. SSHKEY — это кастомное название, вы можете назвать этот секрет как угодно.

Для этого сгенерируйте пару ключей, если вы еще этого не сделали, с помощью команды ssh-keygen -t rsa, а после этого скопируйте ваш приватный ключ с помощью cat ~/.ssh/id_rsa и создайте секрет.

Секреты, которые передаются через ${{ }} синтаксис можно создать тут:

Вот так просто можно быстро настроить сносный CI/CD для вашего приложения и автоматизировать рутинные задачи.

Не теряйте время на роботу, которую можно и нужно автоматизировать.

А чтобы не пропускать интересный материал по разработке, подписывайтесь на мой Telegram канал, в котором я делюсь знаниями и опытом.

Чести и удачи!

--

--

Maksim Zhashkevych

🔥Пишу о разработке, личностном росте и ясности ума 📍20 лет. Киев, Украина. https://zhashkevych.com/