admin 06 ноября 2018

GitHub Actions: что это и как использовать

Процесс разработки кода может быть утомительным. Но что если бы вы могли снять часть этой работы с ваших плеч? В этом поможет GitHub Actions.


Github Actions – функция, введенная недавно в Github, позволяющая автоматизировать рабочий процесс. Теперь GitHub может заботиться о ряде процессов, которые могут быть вызваны различными событиями: пушинг кода, создание релиза или issues.

Примечание: GitHub Actions в настоящее время находится в бета-версии, поэтому придется зарегистрироваться тут, чтобы получить доступ.

github signing

Что можно сделать при помощи Github Actions? Возможности безграничны:

  • непрерывная интеграция (создание, тестирование и развертывание ПО);
  • публикация npm-модулей;
  • оповещения по электронной почте или SMS;
  • и т. д.

Это делается с помощью экшенов, которые могут быть определены в вашем или любом публичном репозитории Github или в образе Docker.

После того как вы залогинитесь, у вас появляется доступ к workflows и actions для создания собственных экшенов.

Вы можете легко получить доступ к редактору GUI через вкладку Actions, которая будет добавлена к вашим репозиториям, как только будут выданы такие права.

github actions

Как работает GitHub Actions?

Github Actions работают с помощью настроенного workflow, который содержит экшены, их отношения и зависимости.

Workflow

Этот параметр определяет, как экшены должны работать, и порядок их выполнения.

При создании нового workflow начните с main. файла, который найдете в .github/ каталоге репозитория.

|-- my-repo (repository)
|   |** .github
|       |** main.workflow

Файл main.workflow содержит любое количество блоков workflow и actions в установленном порядке, и вы можете работать с ними в этом файле. Ниже приведен пример workflow с одним блоком workflow и тремя блоками actions:

workflow "MYWORK" {
  on = "EVENT"
  resolves = "ACTION3"
}

action "ACTION1" {
  uses = "docker://image1"
}

action "ACTION2" {
  needs = "ACTION1"
  uses = "docker://image2"
}

action "ACTION3" {
  needs = "ACTION2"
  uses = "docker://image3"
}

Выше описана такая последовательность:

  • ключевое слово on означает определенное событие (EVENT), запускающее workflow (MYWORK);
  • MYWORK вызывает 3-й экшен (ACTION3) с помощью ключевого слова resolves;
  • для выполнения ACTION3 нужен ACTION2, который, в свою очередь, требует ACTION1.

Именно по этой причине экшены выполняются в следующем порядке:

ACTION1 --> ACTION2 --> ACTION3

Экшен инициализируется только после успешного выполнения всех необходимых условий. Если атрибут resolves представлен массивом экшенов, они будут выполняться параллельно, как показано ниже:

workflow "IDENTIFIER" {
  on = "EVENT"
  resolves = ["ACTION1", "ACTION2"]
}

Интерфейс workflows

Есть возможность создать workflow с помощью графического интерфейса GitHub, щелкнув вкладку Actions и нажав кнопку "Create a new workflow". Откроется визуальный редактор, в котором можно задать параметры рабочего процесса.

visual editor

Клик по пункту "Edit" откроет вкладку конфигурации, где можно определить имя рабочего процесса, а также события, которые его инициируют.

configure workflow

События-инициализаторы определяются в раскрывающемся списке "Run":

workflow issue

Как только вы закончите настройку, нажмите Done, и ваш рабочий процесс будет готов к работе. Следующий шаг – добавление экшенов в рабочий процесс. Но сначала давайте посмотрим, как функционируют actions.

Actions

В действиях мы определяем, какие команды будут выполняться. Они могут храниться в образе docker, доступ к которому можно получить с помощью атрибута uses. Мы также можем попросить выполнить определенную команду в образе Docker с помощью атрибута runs, если это не предусмотрено – выполнится инструкция Dockerfile ENTRYPOINT. Если нужна определенная последовательность действий, используется атрибут needs, как показано в примере выше.

Переменные окружения

В actions мы можем применять любые переменные среды через атрибут env. Секретные переменные, такие как токены, предоставляются в атрибуте secrets. Они должны быть установлены в GUI рабочего процесса во вкладке "Settings". Мы также можем передавать аргументы экшенам в виде строки или массива, разделенного запятыми с помощью атрибута args.

При инициализации action рекомендуется указать версию данного action, использовав тег SHA или Docker. Это предотвратит нарушение работы workflow в случае публикации владельцем "корявого" обновления.

Настройка actions с помощью GUI-редактора еще проще – перетащите вниз синюю точку-коннектор в workflow.

drag-n-drop

Добавьте имя экшена в разделе Choose Action и нажмите кнопку Use. Вы можете добавить другие параметры конфигурации, как показано ниже, и нажать в конце Done.

configure action

Повторите эти шаги, если хотите добавить дополнительные действия в workflow и связать их по своему усмотрению. По завершении редактирования workflow в правом верхнем углу нажмите кнопку Start commit.

start commit

Введите комментарий коммита, укажите адрес электронной почты, выберите ветку и нажмите Propose new file.

commit new file

Коммит workflow делает его доступным для вашей ветки. Чтобы включить workflow для всего проекта, создайте Pull Request для master и объедините его. Чтобы убедиться в правильной работе workflow, перед слиянием откройте вкладку Checks.

pushed data

Чтобы узнать больше о том, как настроить свой workflow, а также какие события GitHub поддерживаются экшенами, ознакомьтесь с официальными инструкциями здесь.

Ограничения для workflow

Важно отметить, что в настоящее время GitHub накладывает следующие ограничения на все workflow:

  • Каждый workflow должен выполняться не более 58 минут, включая постановку в очередь и выполнение;
  • каждый workflow может обработать до 100 экшенов;
  • репозиторий способен параллельно выполнять не более 2 рабочих процессов;
  • задача, выполняемая в рамках одного экшена, не может инициировать другие экшены.

Заключение

Github Actions определенно стоит внимания. Это упростит процесс разработки и сэкономит время. Если вы не хотите ковыряться во всех ваших конфигах, то Github предоставляет графический интерфейс, где вы можете все это быстро выполнить. Настройте свои экшены для любого ЯП, при помощи множества библиотек с открытым исходным кодом.

Оригинал

Другие материалы по теме:

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Go-разработчик
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ