Skip to main content

Эта версия GitHub Enterprise Server будет прекращена 2026-08-25. Снятые релизы не поддерживаются. Исправления выпускаться не будут даже при критических проблемах безопасности. Для лучшей производительности, повышения безопасности и новых функций GitHub Enterprise Server см. Обзор процесса обновления. Для помощи с обновлением обращайтесь в GitHub Enterprise Support.

Переход с Travis CI на GitHub Actions

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

Примечание.

GitHub Enterprise Serverразмещенные в данный момент средства выполнения не поддерживаются в GitHub.

Введение

Это руководство поможет вам перейти из Travis CI в 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см. в разделе Написание рабочих процессов.