Как GitHub Actions автоматизирует задачи разработки?
В этом разделе вы познакомитесь с действиями GitHub Actions и рабочими процессами. Вы узнаете, какие бывают типы действий и где они находятся. Вы также рассмотрите примеры этих типов действий и их роль в рабочем процессе.
GitHub ускоряет процесс разработки
GitHub помогает разработчикам и инженерам DevOps быстро создавать и развертывать приложения. В GitHub доступно для этого множество функций, но обычно их можно отнести к одной из двух категорий:
- Коммуникация — GitHub предоставляет разработчикам множество простых возможностей для коммуникации в ходе проекта разработки ПО: проверка кода в запросах на вытягивание, обсуждение проблем на GitHub, доски проектов, вики-страницы, уведомления и многое другое.
- Автоматизация — действия GitHub Actions позволяют вашей команде автоматизировать рабочие процессы на каждом этапе разработки ПО (от интеграции до развертывания). Вы можете даже автоматизировать добавление меток к запросам на вытягивание и проверку ожидающих запросов и нерешенных проблем.
В совокупности такие возможности помогают тысячам команд разработчиков эффективно ускорять реализацию идей и развертывание решений.
Использование автоматизации рабочих процессов для ускоренной разработки
Мы сосредоточимся на автоматизации в этом модуле, поэтому давайте рассмотрим, как команды могут использовать автоматизацию для сокращения времени, необходимого для выполнения типичного рабочего процесса разработки и развертывания.
Рассмотрим все задачи, которые должны выполняться после написания кода, но прежде чем надежно использовать код для его целевой цели. В зависимости от целей организации вам с большой вероятностью потребуется выполнить одну или несколько следующих задач:
- проверка того, что код прошел все модульные тесты;
- проверка качества исходного кода и соответствия его стандартам организации;
- проверка кода и его зависимостей на наличие известных проблем безопасности;
- сборка кода с интеграцией нового исходного кода от (потенциально) нескольких авторов;
- проверка того, что ПО прошло тесты на интеграцию;
- создание версии новой сборки;
- доставка двоичных файлов в соответствующее расположение файловой системы;
- развертывание новых двоичных файлов на одном или нескольких серверах.
- Если какие-либо из этих задач не передаются, сообщите о проблеме соответствующим отдельным лицам или команде для решения
Все эти задачи должны выполняться регулярно, надежно и единообразно. Поэтому автоматизация идеально подходит для этого. Если вы уже используете GitHub, вы, вероятно, захотите настроить автоматизацию рабочих процессов с помощью GitHub Actions.
Что такое GitHub Actions?
GitHub Actions — это упакованные скрипты для автоматизации задач в рабочем процессе разработки программного обеспечения в GitHub. Вы можете настроить GitHub Actions на выполнение сложных рабочих процессов, необходимых вашей организации, каждый раз, когда разработчики регистрируют новый исходный код в определенной ветви, либо через определенные интервалы времени или вручную. В результате вы получаете надежный, экономичный и автоматизированный рабочий процесс, который значительно ускоряет разработку.
Где можно найти GitHub Actions?
GitHub Actions — это скрипты, соответствующие формату данных YML. Каждый репозиторий имеет вкладку Действия, которая позволит быстро и просто настроить ваш первый скрипт. Если у вас есть рабочий процесс, который можно взять за отправную точку, просто нажмите кнопку Настроить, чтобы добавить скрипт и начать редактирование исходного кода YML.
Но помимо этого на вкладке действий в GitHub Actions вы можете:
- Выполнять поиск GitHub Actions в GitHub Marketplace. GitHub Marketplace позволяет вам находить и приобретать средства для расширения рабочих процессов.
- Выполнять поиск проектов с открытым кодом. Например, организация GitHub Actions включает множество популярных репозиториев с открытым кодом, предоставляющих доступные для использования действия GitHub Actions.
- Создавать собственные действия GitHub Actions с нуля. Кроме того, при необходимости вы можете предоставлять их с открытым кодом или публиковать их в GitHub Marketplace.
Использование действий GitHub с открытым кодом
Многие действия GitHub имеют открытый код и доступны для всех, кто хочет их использовать. Тем не менее, перед использованием в проекте их необходимо тщательно проверить, как и любое программное обеспечение с открытым кодом. Аналогично рекомендуемым стандартам сообщества с программным обеспечением с открытым исходным кодом( например, README, кодекс поведения, внесение вклада в файл и шаблоны проблем, только для того чтобы назвать несколько), вы можете следовать этим рекомендациям при использовании GitHub Actions:
- Проверьте входные и выходные данные файла действия
action.yml
, чтобы убедиться в правильности кода. - Проверьте, находится ли действие в GitHub Marketplace. Это полезная проверка, даже хотя действие не из GitHub Marketplace тоже допустимо.
- Убедитесь, проверено ли действие в GitHub Marketplace. Это означает, что использование этого действия утверждено в GitHub. Тем не менее, его необходимо проверить перед использованием.
- Добавьте версию используемого действия, указав ссылку на Git, агент работоспособности системы или тег.
Типы действий GitHub
Существует три типа действий GitHub: действия контейнера, действия JavaScript и составные действия.
При использовании действий контейнера среда является частью кода действия. Эти действия могут выполняться только в среде Linux, в которой размещены узлы GitHub. Действия контейнера поддерживают множество различных языков.
Действия JavaScript не включают среду в код. Необходимо указать среду для выполнения этих действий. Эти действия можно выполнять на виртуальной машине в облаке или локальной среде. Действия JavaScript поддерживают среды Linux, macOS и Windows.
Составные действия позволяют объединить несколько шагов рабочего процесса в одном действии. Например, с помощью этой функции можно объединить несколько команд выполнения в действие, а затем использовать рабочий процесс, который выполняет такие объединенные команды за один шаг с помощью этого действия.
Составляющие действия GitHub
Ниже приведен пример действия, которое выполняет извлечение репозитория из Git. Это действие, actions/checkout@v1, является частью шага в рабочем процессе. На этом шаге также выполняется сборка кода Node.js, который был извлечен. В следующем разделе мы будем говорить о рабочих процессах, заданиях и шагах.
steps:
- uses: actions/checkout@v1
- name: npm install and build webpack
run: |
npm install
npm run build
Предположим, вы хотите использовать действие контейнера для запуска контейнерного кода. Ваше действие может выглядеть следующим образом:
name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"
inputs:
MY_NAME:
description: "Who to greet"
required: true
default: "World"
runs:
uses: "docker"
image: "Dockerfile"
branding:
icon: "mic"
color: "purple"
Обратите внимание на раздел inputs
. Здесь вы получаете значение переменной с именем MY_NAME
. Эта переменная будет задана в рабочем процессе, выполняющем это действие.
В разделе runs
нужно указать docker в атрибуте uses
. При этом необходимо указать путь к файлу образа Docker. Здесь он называется Dockerfile. Мы не посмотрим на особенности Docker здесь, но если вы хотите получить дополнительные сведения, ознакомьтесь с модулем "Введение в контейнеры Docker".
В последнем разделе, фирменное оформление, выполняется персонализация действия в GitHub Marketplace, если вы решили опубликовать его там.
Полный список метаданных действия можно найти в разделе Синтаксис метаданных для GitHub Actions.
Что такое рабочий процесс GitHub Actions?
Рабочий процесс GitHub Actions — это процесс, настроенный в репозитории для автоматизации задач жизненного цикла разработки программного обеспечения, включающий GitHub Actions. С помощью рабочего процесса можно выполнять сборку, тестирование, упаковку, выпуск или развертывание любого проекта в GitHub.
Чтобы создать рабочий процесс, добавьте действия в YML-файл в каталоге .github/workflows
в репозитории GitHub.
В следующем упражнении файл рабочего процесса main.yml будет выглядеть следующим образом:
name: A workflow for my Hello World file
on: push
jobs:
build:
name: Hello world action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./action-a
with:
MY_NAME: "Mona"
Обратите внимание на атрибут on:
. Это триггер для указания времени запуска рабочего процесса. Здесь он запускает выполнение при наличии события отправки в репозиторий. Можно указать отдельные события, такие как on: push
, массив событий, например on: [push, pull_request]
, или схему конфигурации событий, которая планирует рабочий процесс или ограничивает его выполнение только определенными файлами, тегами или изменениями ветви. Схема должна выглядеть примерно следующим образом:
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
# Also trigger on page_build, as well as release created events
page_build:
release:
types: # This configuration does not affect the page_build event above
- created
Событие будет запущено для всех типов действий в рамках данного события, если вы не указали типы. Полный список событий и их типов действий см. в следующих статьях: События, инициирующие рабочие процессы в документации GitHub.
Рабочий процесс должен содержать хотя бы одно задание. Задание — это раздел рабочего процесса, связанного с средством выполнения. Средство выполнения может быть размещено на GitHub или в локальной среде, а задание может выполняться на компьютере или в контейнере. Средство выполнения указывается с помощью атрибута runs-on:
. Здесь вы указываете рабочему процессу выполнить это задание в ubuntu-latest
.
Каждое задание состоит из шагов. В нашем примере в шаге используется действие actions/checkout@v1 для извлечения репозитория. Интересно, что значение uses: ./action-a
— это путь к действию контейнера, которое вы создаете в файле action.yml. Содержимое файла action.yml мы рассмотрели в разделе Что такое GitHub Actions?.
Последняя часть этого файла рабочего процесса задает MY_NAME
значение переменной для этого рабочего процесса. Помните, что действие контейнера выполнило вызов MY_NAME
входных данных.
Дополнительные сведения о синтаксисе рабочего процесса см. в разделе Синтаксис рабочего процесса для GitHub Actions
Средства выполнения тестов, размещенные в GitHub, и локальные средства выполнения
Мы вкратце упоминали средства выполнения, связанные с заданием. Средство выполнения — это сервер, на котором установлено приложение выполнения GitHub Actions. В предыдущем примере рабочего процесса в блоке заданий был runs-on: ubuntu-latest
атрибут, который сказал рабочему процессу, что задание будет выполняться с помощью GitHub, размещенного в среде.ubuntu-latest
Когда речь идет о бегунах, есть два варианта, из которых можно выбрать: GitHub,размещенные в runners или локальные runners. Если вы используете средство запуска с размещением в GitHub, каждое задание выполняется в новом экземпляре виртуальной среды, указанной заданным типом запуска, размещенным в GitHub, runs-on: {operating system-version}
который вы определяете. Если вы используете локальные средства выполнения тестов, необходимо применить локальную метку, операционную систему и системную архитектуру. Например, автономный модуль выполнения с операционной системой Linux и архитектурой ARM32 будет выглядеть следующим образом: runs-on: [self-hosted, linux, ARM32]
Каждый тип средства выполнения тестов имеет свои преимущества. Средства выполнения тестов, размещенные в GitHub, предлагают более быстрый и простой способ запуска рабочих процессов, но с ограниченными возможностями. Локальные средства выполнения тестов — это легко настраиваемые механизмы запуска рабочих процессов в собственном локальном окружении. Вы можете запускать локальные или локальные runners в облаке. Вы также можете использовать локальные средства выполнения тестов для создания собственных параметров оборудования с большим объемом вычислительной мощности или памяти для выполнения больших заданий, установки программного обеспечения в локальной сети и выбора операционной системы, недоступной для средств выполнения тестов, размещенных в GitHub.
GitHub Actions могут меть ограничения на использование
GitHub Actions имеет некоторые ограничения на использование в зависимости от плана GitHub и того, размещен ли ваш модуль GitHub или размещен самостоятельно. Дополнительные сведения об ограничениях использования см. в разделе Ограничения использования, выставление счетов и администрирование в документации GitHub.