GitHub Actions – это новая служба непрерывной интеграции и непрерывной доставки сервисов (CI/CD) от GitHub, которая позволяет автоматизировать конвейер сборки, тестирования и развертывания.
С помощью GitHub Actions вы можете создавать автоматизированные конвейеры, которые можно тестировать, создавать и развертывать при каждом push-запросе в ваш репозиторий.
Непрерывная интеграция и непрерывная доставка (CI/CD) являются ключевыми практиками для современных команд разработчиков программного обеспечения. CI/CD позволяет автоматизировать создание, тестирование и развертывание изменений кода для ускорения циклов выпуска.
Что такое GitHub Actions?
GitHub Actions – относительно новый, но мощный проигрыватель в пространстве CI/CD. Он позволяет вам создавать пользовательские автоматизированные рабочие процессы непосредственно в ваших репозиториях GitHub.
С помощью GitHub Actions вы можете настраивать пользовательские рабочие процессы, используя файлы YAML, сохраненные в вашем репозитории. Эти файлы рабочего процесса могут запускаться при различных событиях, таких как запуск кода, запросы на извлечение и выпуски.
Задания и шаги, определенные в рабочих процессах, могут использовать действия GitHub из marketplace или запускать пользовательские скрипты и контейнеры.
Ключевые концепции действий GitHub
Некоторые ключевые концепции GitHub Actions включают:
Рабочий процесс
Рабочий процесс – это автоматизированный процесс, который вы можете настроить в своем репозитории для сборки, тестирования, упаковки, выпуска и развертывания вашего кода. Рабочие процессы определяются с использованием синтаксиса YAML и хранятся в виде файлов в каталоге .github/workflows
.
Событие
Событие – это конкретное действие, которое запускает рабочий процесс. Например, распространенными событиями являются push
, pull_request
и release
. Вы можете настроить рабочий процесс для запуска при возникновении одного из этих событий в вашем репозитории.
Задание
Задание – это набор шагов в рабочем процессе, которые выполняются в одном и том же исполнителе. В рабочем процессе может быть несколько заданий, которые выполняются последовательно или параллельно.
Шаг
Шаг – это отдельная задача, которая может запускать команды или действия. Шаги можно использовать повторно, комбинировать и упорядочивать для создания заданий.
Экшен
Действия – это автономные команды, которые можно объединить в шаги и задания. GitHub предоставляет множество готовых действий для общих задач, или вы можете создавать свои собственные пользовательские действия.
Runner
Runner – это сервер, на котором установлено приложение GitHub Actions runner. Оно прослушивает доступные задания, выполняет по одному заданию за раз и сообщает о ходе выполнения, журналах и результатах в GitHub.
Вы также можете использовать автономные раннеры для запуска своих рабочих процессов.
Действия GitHub: пример рабочего процесса
Пример рабочего процесса с 1 заданием
Вот пример рабочего процесса, который проверяет наличие версии ОС всякий раз, когда код передается в ветку:
name: GH Actions Demo on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: OS Release check run: cat /etc/os-release
Это простейший файл YAML рабочего процесса, содержащий только 1 задание. В рамках одного рабочего процесса может быть несколько заданий, и они могут выполняться параллельно или зависеть друг от друга.
В этом рабочем процессе есть 1 задание – сборка. Задание сборки проверяет код и проверяет версию ОС с помощью команды cat.
Рабочий процесс будет выполняться каждый раз, когда код передается в ветку, где он присутствует. Вы также можете изменять его для каждого запроса на извлечение, слияние или даже запускать рабочий процесс по расписанию.
Изменить событие запуска или добавить дополнительные задания в GitHub Actions просто.
Пример рабочего процесса с 2 заданиями с зависимостью
Вот пример рабочего процесса, который содержит 2 задания. Задание “развертывание” зависит от задания “сборка”.
name: GH Action Demo on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run Task 1 run: echo ---- Running Task 1 --- deploy: runs-on: ubuntu-latest needs: [build] steps: - uses: actions/checkout@v2 - name: Run Task 2 - Random Commands run: | echo ---- Running Task 2 --- pwd ls uname -a
В приведенном выше примере сначала будет запущено задание “build”, а после его успешного завершения будет запущено задание “deploy”. Это простой файл рабочего процесса, и вы можете включить в него любые команды, чтобы автоматизировать процесс развертывания.
Например, создание артефактов или образов docker в первом задании, а затем отправка их в реестр docker, ECR или в корзину S3.
На приведенном ниже скриншоте показано, как это выглядит в конвейере GitHub Actions.
Основные преимущества GitHub Actions
Некоторые ключевые преимущества GitHub Actions включают:
- Автоматизируйте свои конвейеры CI/CD
- Протестируйте в нескольких версиях вашей среды выполнения, например Node.js, Python и т. д
- Развертывание в нескольких средах, таких как разработка, промежуточная и производственная
- Интеграция с другими функциями GitHub, такими как запросы на извлечение
- Расширяйте действия с помощью контейнеров JavaScript или Docker
- Богатая экосистема сторонних действий
- Гибкие рабочие процессы с использованием синтаксиса YAML
Заключение
Вкратце, GitHub Actions – это мощная платформа для автоматизации жизненного цикла разработки программного обеспечения. Используя рабочие процессы и готовые действия, вы можете легко создавать, тестировать и развертывать. Гибкий синтаксис YAML позволяет легко настраивать конвейеры для нужд вашего