Skip to main content

Поддержка этой версии GitHub Enterprise была прекращена 2023-01-18. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, укрепления безопасности и новых функций установите последнюю версию GitHub Enterprise. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Миграция с Travis CI на GitHub Actions

GitHub Actions и Travis CI имеют несколько сходств в конфигурации, что делает миграцию на GitHub Actions относительно простой.

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Введение

Это руководство поможет вам перейти с Travis CI на GitHub Actions. В нем сравниваются их концепции и синтаксис, описываются сходства и демонстрируются разные подходы к распространенным задачам.

Перед началом работы

Прежде чем начать миграцию на GitHub Actions, рекомендуется ознакомиться с принципами его работы.

Сравнение выполнения заданий

Чтобы управлять выполнением задач CI, рабочий процесс GitHub Actions использует задания, которые по умолчанию выполняются параллельно. Каждое задание содержит шаги, выполняемые в определенной последовательности. Если вам нужно выполнять действия по настройке и очистке задания, можно определить шаги для выполнения этих действий в каждом задании.

Ключевые сходства

GitHub Actions и Travis CI имеют определенные сходства, и если вы будете понимать их заранее, это поможет сделать процесс миграции более гладким.

Использование синтаксиса YAML

В Travis CI и GitHub Actions используется YAML для создания заданий и рабочих процессов, и эти файлы хранятся в репозитории кода. Дополнительные сведения о том, как GitHub Actions использует YAML, см. в разделе Создание файла рабочего процесса.

Пользовательские переменные

Travis CI позволяет задавать переменные и совместно использовать их между этапами. Аналогичным образомGitHub Actions позволяет определять переменные для рабочих процессов. Дополнительные сведения см. в разделе Переменные.

Переменные по умолчанию

В Travis CI и GitHub Actions имеются переменные среды по умолчанию, которые можно использовать в файлах YAML. Для GitHub Actions эти переменные перечислены в разделе Переменные среды по умолчанию.

Обработка параллельных заданий

Travis CI может использовать stages для параллельного выполнения заданий. Аналогично, GitHub Actions выполняет jobs параллельно. Дополнительные сведения см. в разделе Создание зависимых заданий.

Значки состояния

Travis CI и GitHub Actions поддерживают индикаторы состояний, которые позволяют указать, выполняется ли сборка успешно или произошел сбой. Дополнительные сведения см. в разделе Добавление индикатора состояния рабочего процесса.

Использование матрицы

Travis CI и GitHub Actions поддерживают матрицу, что позволяет выполнять тестирование, используя сочетания операционных систем и программных пакетов. Дополнительные сведения см. в разделе Использование матрицы для заданий.

Ниже приведен пример сравнения синтаксиса для каждой системы.

Travis CI GitHub Actions
matrix:
  include:
    - rvm: 2.5
    - rvm: 2.6.3
jobs:
  build:
    strategy:
      matrix:
        ruby: [2.5, 2.6.3]

Нацеливание на конкретные ветви

Travis CI и GitHub Actions позволяют нацеливать CI на определенную ветвь. Дополнительные сведения см. в статье "Синтаксис рабочего процесса для GitHub Actions".

Ниже приведен пример синтаксиса для каждой системы.

Travis CI GitHub Actions
branches:
  only:
    - main
    - 'mona/octocat'
on:
  push:
    branches:
      - main
      - 'mona/octocat'

Проверка подмодулей

Travis CI и GitHub Actions позволяют контролировать, включены ли подмодули в клон репозитория.

Ниже приведен пример синтаксиса для каждой системы.

Travis CI GitHub Actions
git:
  submodules: false
- uses: actions/checkout@v2
  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: 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 включает встроенную поддержку хранилища артефактов, что позволяет обмениваться файлами между заданиями в рабочем процессе. Вы также можете сохранять итоговые файлы и предоставлять другим рабочим процессам общий доступ к этим файлам. Дополнительные сведения см. в разделе Совместное использование данных в заданиях.

Размещение собственных средств выполнения

Если для ваших заданий требуется определенное оборудование или программное обеспечение, 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или создать собственные действия. Дополнительные сведения см. в разделе Создание действий.

Ниже приведен пример синтаксиса для каждой системы.

Travis CI GitHub Actions
language: python
python:
  - "3.7"

скрипт:
  - python script.py
jobs:
  run_python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v2
        with:
          python-version: '3.7'
          architecture: 'x64'
      - run: python script.py

Кэширование зависимостей

Travis CI и GitHub Actions позволяют вручную кэшировать зависимости для последующего повторного использования.

Кэширование GitHub Actions доступно только для репозиториев, размещенных на GitHub.com или GitHub Enterprise Serverверсии 3.5 и более поздних версий. Дополнительные сведения см. в разделе Кэширование зависимостей для ускорения рабочих процессов.

Примеры распространенных задач

В этом разделе сравнивается, как GitHub Actions и Travis CI выполняют распространенные задачи.

Настройка переменных среды

Вы можете создавать пользовательские переменные среды в задании GitHub Actions. Пример:

Travis CI Рабочий процесс GitHub Actions
env:
  - MAVEN_PATH="/usr/local/maven"
jobs:
  maven-build:
    env:
      MAVEN_PATH: '/usr/local/maven'

Сборка с помощью Node.js

Travis CI Рабочий процесс GitHub Actions
install:
  - npm install
script:
  - npm run build
  - npm test
name: Node.js CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '12.x'
      - run: npm install
      - run: npm run build
      - run: npm test

Дальнейшие действия

Чтобы продолжить изучение основных возможностей GitHub Actions, перейдите к разделу Основные возможности GitHub Actions.