Введение
Это руководство поможет вам перейти с Travis CI на GitHub Actions. В нем сравниваются их концепции и синтаксис, описываются сходства и демонстрируются разные подходы к распространенным задачам.
Перед началом работы
Прежде чем начать миграцию на GitHub Actions, рекомендуется ознакомиться с принципами его работы.
- Краткий пример, демонстрирующий задание GitHub Actions, см. в разделе Quickstart for GitHub Actions.
- Основные понятия GitHub Actions см. в разделе Understanding GitHub Actions.
Сравнение выполнения заданий
Чтобы управлять выполнением задач CI, рабочий процесс GitHub Actions использует задания, которые по умолчанию выполняются параллельно. Каждое задание содержит шаги, выполняемые в определенной последовательности. Если вам нужно выполнять действия по настройке и очистке задания, можно определить шаги для выполнения этих действий в каждом задании.
Ключевые сходства
GitHub Actions и Travis CI имеют определенные сходства, и если вы будете понимать их заранее, это поможет сделать процесс миграции более гладким.
Использование синтаксиса YAML
В Travis CI и GitHub Actions используется YAML для создания заданий и рабочих процессов, и эти файлы хранятся в репозитории кода. Дополнительные сведения о том, как GitHub Actions использует YAML, см. в разделе Создание файла рабочего процесса.
Пользовательские переменные
Travis CI позволяет задавать переменные и совместно использовать их между этапами. Аналогичным образомGitHub Actions позволяет определять переменные для рабочих процессов. Дополнительные сведения см. в разделе Variables.
Переменные по умолчанию
В Travis CI и GitHub Actions имеются переменные среды по умолчанию, которые можно использовать в файлах YAML. Для GitHub Actions они отображаются в разделе "AUTOTITLE".
Обработка параллельных заданий
Travis CI может использовать stages для параллельного выполнения заданий. Аналогично, GitHub Actions выполняет jobs параллельно. Дополнительные сведения см. в разделе About workflows.
Значки состояния
Travis CI и GitHub Actions поддерживают индикаторы состояний, которые позволяют указать, выполняется ли сборка успешно или произошел сбой. Дополнительные сведения см. в разделе Добавление индикатора состояния рабочего процесса.
Использование матрицы
Travis CI и GitHub Actions поддерживают матрицу, что позволяет выполнять тестирование, используя сочетания операционных систем и программных пакетов. Дополнительные сведения см. в разделе Использование матрицы для заданий.
Ниже приведен пример сравнения синтаксиса для каждой системы.
| Travis CI | GitHub Actions |
|---|---|
|
|
Нацеливание на конкретные ветви
Travis CI и GitHub Actions позволяют нацеливать CI на определенную ветвь. Дополнительные сведения см. в разделе Workflow syntax for GitHub Actions.
Ниже приведен пример синтаксиса для каждой системы.
| Travis CI | GitHub Actions |
|---|---|
|
|
Проверка подмодулей
Travis CI и GitHub Actions позволяют контролировать, включены ли подмодули в клон репозитория.
Ниже приведен пример синтаксиса для каждой системы.
| Travis CI | GitHub Actions |
|---|---|
|
|
Использование переменных среды в матрице
Travis CI и GitHub Actions могут добавлять пользовательские переменные в тестовую матрицу, что позволяет ссылаться на переменную на следующем шаге.
В GitHub Actions вы можете использовать ключ include для добавления пользовательских переменных среды в матрицу. В этом примере записи матрицы для node-version каждая из них настроена для использования различных значений для переменных среды site и datacenter. Затем шаг Echo site details использует env: ${{ matrix.env }} для ссылки на пользовательские переменные:
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- node-version: 10.x
site: "prod"
datacenter: "site-a"
- node-version: 12.x
site: "dev"
datacenter: "site-b"
steps:
- name: Echo site details
env:
SITE: ${{ matrix.site }}
DATACENTER: ${{ matrix.datacenter }}
run: echo $SITE $DATACENTER
Основные возможности в GitHub Actions
При миграции из Travis CI учитывайте следующие основные возможности в GitHub Actions:
Хранение секретов
GitHub Actions позволяет сохранять секреты и ссылаться на них в заданиях. Организации GitHub Actions могут ограничивать репозиториям доступ к секретам организации. Правила защиты среды могут требовать, чтобы доступ рабочего процесса к секретам среды утверждался вручную. Дополнительные сведения см. в разделе Зашифрованные секреты.
Совместное использование файлов в заданиях и рабочих процессах
GitHub Actions включает встроенную поддержку хранилища артефактов, что позволяет обмениваться файлами между заданиями в рабочем процессе. Вы также можете сохранять итоговые файлы и предоставлять другим рабочим процессам общий доступ к этим файлам. Дополнительные сведения см. в разделе Essential features of GitHub Actions.
Размещение собственных средств выполнения
Если для ваших заданий требуется определенное оборудование или программное обеспечение, GitHub Actions позволяет размещать собственные средства выполнения и отправлять в них задания для обработки. GitHub Actions также позволяет использовать политики для управления доступом к этим средствам выполнения, чтобы предоставлять доступ на уровне организации или репозитория. Дополнительные сведения см. в разделе Размещение собственных средств выполнения.
Параллельные задания и время выполнения
Время выполнения параллельных заданий и рабочих процессов в GitHub Actions может отличаться в зависимости от плана GitHub. Дополнительные сведения см. в разделе Usage limits, billing, and administration.
Использование различных языков в GitHub Actions
При работе с разными языками в GitHub Actions вы можете создать в задании шаг для настройки зависимостей языка. Дополнительные сведения о работе с определенным языком см. в соответствующем руководстве:
- Создание и тестирование для Node.js
- Создание и тестирование для Python
- Сборка и тестирование в PowerShell
- Сборка и тестирование в Java с помощью Maven
- Сборка и тестирование в Java с помощью Gradle
- Сборка и тестирование в Java с помощью Ant
Выполнение скриптов
GitHub Actions может использовать шаги run для выполнения скриптов или команд оболочки. Чтобы использовать определенную оболочку, можно задать тип shell при указании пути к скрипту. Дополнительные сведения см. в разделе Workflow syntax for GitHub Actions.
Пример:
steps:
- name: Run build script
run: ./.github/scripts/build.sh
shell: bash
Обработка ошибок в GitHub Actions
При миграции на GitHub Actions существуют разные подходы к обработке ошибок, о которых вам следует знать.
Обработка ошибок скрипта
GitHub Actions немедленно останавливает задание, если один из шагов возвращает код ошибки. Дополнительные сведения см. в разделе Workflow syntax for GitHub Actions.
Обработка ошибок задания
GitHub Actions использует условные конструкции if для выполнения заданий или шагов в определенных ситуациях. Например, вы можете запустить выполнение некоторого шага, когда другой шаг приводит к failure(). Дополнительные сведения см. в разделе Workflow syntax for GitHub Actions. Вы также можете использовать continue-on-error для предотвращения остановки выполнения рабочего процесса при сбое задания.
Синтаксис миграции для условных конструкций и выражений
Для запуска заданий с условными выражениями Travis CI и GitHub Actions используют аналогичный синтаксис условий if. GitHub Actions позволяет использовать условную конструкцию if для предотвращения выполнения задания или шага, если условие не выполняется. Дополнительные сведения см. в разделе Expressions.
В этом примере показано, как условная конструкция if может управлять выполнением шага:
jobs:
conditional:
runs-on: ubuntu-latest
steps:
- run: echo "This step runs with str equals 'ABC' and num equals 123"
if: env.str == 'ABC' && env.num == 123
Этапы миграции и шаги
В то время как Travis CI использует этапы для выполнения шагов, в GitHub Actions существуют шаги, которые выполняют действия. Вы можете найти предварительно созданные действия в GitHub Marketplaceили создать собственные действия. Дополнительные сведения см. в разделе Создание действий.
Ниже приведен пример синтаксиса для каждой системы.
| Travis CI | GitHub Actions |
|---|---|
|
|
Кэширование зависимостей
Travis CI и GitHub Actions позволяют вручную кэшировать зависимости для последующего повторного использования.
В этом примере демонстрируется синтаксис кэша для каждой системы.
| Travis CI | Действия GitHub |
|---|---|
|
|
Примеры распространенных задач
В этом разделе сравнивается, как GitHub Actions и Travis CI выполняют распространенные задачи.
Настройка переменных среды
Вы можете создавать пользовательские переменные среды в задании GitHub Actions. Пример:
| Travis CI | Рабочий процесс GitHub Actions |
|---|---|
|
|
Сборка с помощью Node.js
| Travis CI | Рабочий процесс GitHub Actions |
|---|---|
|
|
Дальнейшие действия
Дополнительные сведения об основных функциях GitHub Actions см. в разделе Изучение GitHub Actions.