Примечание.
GitHub Enterprise Serverразмещенные в данный момент средства выполнения не поддерживаются в GitHub.
Введение
Это руководство поможет вам перейти из Travis CI в GitHub Actions. В нем сравниваются их концепции и синтаксис, описываются сходства и демонстрируются разные подходы к распространенным задачам.
Перед началом работы
Прежде чем приступить к миграции GitHub Actions, полезно ознакомиться с его работой:
- Краткий GitHub Actions пример, демонстрирующий задание, см. в разделе Быстрый старт для GitHub Actions.
- Сведения о основных GitHub Actions понятиях см. в разделе Понимание GitHub Actions.
Сравнение выполнения заданий
Чтобы обеспечить контроль над выполнением задач CI, GitHub Actions_рабочий процесс_ использует задания , которые выполняются параллельно по умолчанию. Каждое задание содержит шаги, выполняемые в определенной последовательности. Если вам нужно выполнять действия по настройке и очистке задания, можно определить шаги для выполнения этих действий в каждом задании.
Ключевые сходства
GitHub Actions и Travis CI разделяют определенные сходства, и понимание этих данных заранее может помочь сгладить процесс миграции.
Использование синтаксиса YAML
Ci Travis и GitHub Actions yamL используют YAML для создания заданий и рабочих процессов, и эти файлы хранятся в репозитории кода. Дополнительные сведения об GitHub Actions использовании YAML см. в разделе Создание примера рабочего процесса.
Пользовательские переменные
Travis CI позволяет задавать переменные и совместно использовать их между этапами. Аналогичным образом GitHub Actions можно определить переменные для рабочего процесса. Дополнительные сведения см. в разделе Хранение сведений в переменных.
Переменные по умолчанию
Travis CI и GitHub Actions оба включают переменные среды по умолчанию, которые можно использовать в файлах YAML. Для GitHub Actionsэтого вы можете просмотреть их в Справочник по переменным.
Обработка параллельных заданий
Travis CI может использовать stages для параллельного выполнения заданий. Аналогичным образом GitHub Actions выполняется jobs параллельно. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Значки состояния
Трэвис CI и GitHub Actions индикаторы состояния поддержки, которые позволяют указать, передается ли сборка или происходит сбой. Дополнительные сведения см. в разделе Добавление эмблемы состояния рабочего процесса.
Использование матрицы
Travis CI и GitHub Actions оба поддерживают матрицу, позволяя выполнять тестирование с помощью сочетаний операционных систем и пакетов программного обеспечения. Дополнительные сведения см. в разделе Выполнение вариантов заданий в рабочем процессе.
Ниже приведен пример сравнения синтаксиса для каждой системы.
Синтаксис CI Travis для матрицы
matrix:
include:
- rvm: '2.5'
- rvm: '2.6.3'
GitHub Actions синтаксис матрицы
jobs:
build:
strategy:
matrix:
ruby: ['2.5', '2.6.3']
Нацеливание на конкретные ветви
Travis CI и GitHub Actions оба позволяют использовать ci в определенную ветвь. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Ниже приведен пример синтаксиса для каждой системы.
Синтаксис CI Travis для целевых ветвей
branches:
only:
- main
- 'mona/octocat'
GitHub Actions синтаксис для целевых ветвей
on:
push:
branches:
- main
- 'mona/octocat'
Проверка подмодулей
Travis CI и GitHub Actions оба позволяют контролировать, включены ли подмодулы в клон репозитория.
Ниже приведен пример синтаксиса для каждой системы.
Синтаксис TRAvis CI для проверки вложенных модулей
git:
submodules: false
GitHub Actions синтаксис для проверки вложенных модулей
- uses: actions/checkout@v6
with:
submodules: false
Использование переменных среды в матрице
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: '14.x'
site: "prod"
datacenter: "site-a"
- node-version: '16.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 включает встроенную поддержку хранилища артефактов, позволяя совместно использовать файлы между заданиями в рабочем процессе. Вы также можете сохранять итоговые файлы и предоставлять другим рабочим процессам общий доступ к этим файлам. Дополнительные сведения см. в разделе Понимание GitHub Actions.
Размещение собственных средств выполнения
Если для заданий требуется определенное оборудование или программное обеспечение, GitHub Actions вы можете разместить собственных средств выполнения и отправить задания в них для обработки. GitHub Actions также позволяет использовать политики для управления доступом к этим средствам выполнения, предоставляя доступ на уровне организации или репозитория. Дополнительные сведения см. в разделе Управление локальными средствами выполнения.
Использование различных языков в GitHub Actions
При работе с различными языками GitHub Actionsможно создать шаг в задании для настройки зависимостей языка. Дополнительные сведения о работе с определенным языком см. в разделе Создание и тестирование кода.
Выполнение скриптов
GitHub Actions можно использовать run шаги для выполнения скриптов или команд оболочки. Чтобы использовать определенную оболочку, можно задать тип shell при указании пути к скрипту. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Например:
steps:
- name: Run build script
run: ./.github/scripts/build.sh
shell: bash
Обработка ошибок в GitHub Actions
При миграции GitHub Actionsна нее существуют различные подходы к обработке ошибок, о которых может потребоваться знать.
Обработка ошибок скрипта
GitHub Actions немедленно останавливает задание, если один из шагов возвращает код ошибки. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Обработка ошибок задания
GitHub Actions использует if условные условия для выполнения заданий или шагов в определенных ситуациях. Например, вы можете запустить выполнение некоторого шага, когда другой шаг приводит к failure(). Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions. Вы также можете использовать continue-on-error для предотвращения остановки выполнения рабочего процесса при сбое задания.
Синтаксис миграции для условных конструкций и выражений
Для выполнения заданий в условных выражениях Travis CI и GitHub Actions совместного использования аналогичного if синтаксиса условия.
GitHub Actions позволяет использовать условное if условие, чтобы предотвратить выполнение задания или шага, если условие не выполнено. Дополнительные сведения см. в разделе Оценка выражений в рабочих процессах и действиях.
В этом примере показано, как условная конструкция 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можно найти или создать собственные действия. Дополнительные сведения см. в разделе Повторное выполнение автоматизации.
Ниже приведен пример синтаксиса для каждой системы.
Синтаксис CI Travis для этапов и шагов
language: python
python:
- "3.7"
script:
- python script.py
GitHub Actions синтаксис для шагов и действий
jobs:
run_python:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.7'
architecture: 'x64'
- run: python script.py
Кэширование зависимостей
Travis CI и GitHub Actions позволяет вручную кэшировать зависимости для последующего повторного использования.
В этих примерах показан синтаксис кэша для каждой системы.
Синтаксис TRAvis CI для кэширования
language: node_js
cache: npm
Синтаксис GitHub Actions для кэширования
- name: Cache node modules
uses: actions/cache@v4
with:
path: ~/.npm
key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
restore-keys: v1-npm-deps-
Примеры распространенных задач
В этом разделе сравнивается, как GitHub Actions и Трэвис CI выполняют распространенные задачи.
Настройка переменных среды
В задании можно создавать пользовательские GitHub Actions переменные среды.
Синтаксис CI Travis для переменной среды
env:
- MAVEN_PATH="/usr/local/maven"
GitHub Actions Рабочий процесс с переменной среды
jobs:
maven-build:
env:
MAVEN_PATH: '/usr/local/maven'
Сборка с помощью Node.js
Travis CI для строительства с Node.js
install:
- npm install
script:
- npm run build
- npm test
GitHub Actions рабочий процесс для создания с помощью Node.js
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '16.x'
- run: npm install
- run: npm run build
- run: npm test
Следующие шаги
Дополнительные сведения о основных функциях GitHub Actionsсм. в разделе Написание рабочих процессов.