Как 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 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.