[bash] ---- make say-hello Hello, World! ----
GitHub Actions — бесплатная для публичных репозиториев система непрерывной интеграции. Хекслет использует Actions во всех своих закрытых и открытых проектах (пример). С помощью Github Actions можно делать много полезного:
В этом уроке мы разберемся в основных концепциях системы, а затем рассмотрим пример настройки, чтобы быстро начать работу с Actions в своем репозитории.
Общий принцип работы Github Actions такой: в нужном репозитории создается директория .github/workflows. Внутри нее размещаются файлы с описанием шагов, которые нужно выполнить на различные действия. Ниже описание процесса "hello-world", который запускается на пуш в репозиторий. В терминах Github Actions такое описание процесса называется воркфлоу. В нем определяется на какие события реагировать и что конкретно делать:
# file: .github/workflows/hello-world.yml
name: hello-world
# on – определяет события, которые запускают воркфлоу
on: push
jobs:
# build – произвольно выбранное имя задания
# их может быть больше одного
build:
# операционная система для работы воркфлоу
runs-on: ubuntu-latest
steps: # список шагов, которые надо выполнить
# экшен, выполняет какую-то задачу
# checkout – клонирует репозиторий
- uses: actions/checkout@v3
# run – произвольная bash-команда
# ls -la выведет содержимое текущего репозитория
- run: ls -la
Этот воркфлоу просто печатает на экран две строчки подряд. Реальные воркфлоу выглядят сложнее, но прямо сейчас нам важно ухватить общую структуру не отвлекаясь на конкретный процесс. У любой системы непрерывной интеграции есть набор блоков, из которых строится процесс выполнения. Он примерно одинаковый для всех за исключением некоторых деталей. Дальше мы кратко пробежимся по этим блокам, а уже в следующих уроках подробно поговорим про некоторые из них.
На картинке ниже показаны основные концепции GitHub Actions. Разберем их по порядку.
Воркфлоу / Workflows
Каждый репозиторий на GitHub может содержать один или несколько воркфлоу. Каждый воркфлоу определяется в отдельном файле конфигурации в каталоге репозитория .github/workflows. Несколько воркфлоу могут выполняться параллельно.
События / Events
Воркфлоу может запускаться одним или несколькими событиями. Это могут быть внутренние события GitHub (например, пуш, релиз или пул-реквест), запланированные события (запускаются в определенное время — например, cron) или произвольные внешние события (запускаются вызовом Webhook API GitHub).
Задания / Jobs
Воркфлоу состоит из одного или нескольких заданий. Задание содержит набор команд, которые запускаются вместе с рабочим процессом. По умолчанию при запуске воркфлоу все его задания выполняются параллельно, однако между ними можно определить зависимость, чтобы они выполнялись последовательно.
Раннеры / Runners
Каждое задание выполняется на определенном раннере — временном сервере на GitHub с выбранной операционной системой (Linux, macOS или Windows). Также существуют автономные раннеры, которые позволяют создать свое окружение для выполнения экшена.
Шаги / Steps
Задания состоят из последовательности шагов. Шаг — это либо команда оболочки (shell command), либо экшен (action). Все шаги задания выполняются последовательно на раннере, связанном с заданием. По умолчанию в случае сбоя шага все следующие шаги задания пропускаются.
Экшен / Actions
Экшен — многократно используемый блок кода, который может служить шагом задания. Каждый экшен может принимать на вход параметры и создавать любые значения, которые затем можно использовать в других экшенах. Разработчики могут создавать собственные экшены или использовать опубликованные сообществом GitHub. Общих экшенов около тысячи, все они доступны на GitHub Marketplace.
По традиции создадим собственный Hello, World! из воркфлоу.
Создайте в репозитории Makefile и добавьте в него команду say-hello
, которая печатает на экран Hello, World!
[bash] ---- make say-hello Hello, World! ----
Создайте воркфлоу, в котором запускается созданная команда
Запушьте все изменения на гитхаб и проверьте, что воркфлоу выполнился успешно
Добавьте в README.md бейдж со ссылкой на Github Actions
В результате, у вас должен получиться рабочий воркфлоу, а в ридми проекта зеленый бейдж, сообщающий о статусе последнего выполнения.
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт