{"meta":{"title":"Переход с Travis CI на GitHub Actions","intro":"GitHub Actions и Travis CI совместно используют несколько сходств, что помогает сделать его относительно простым для миграции GitHub Actions.","product":"GitHub Actions","breadcrumbs":[{"href":"/ru/actions","title":"GitHub Actions"},{"href":"/ru/actions/tutorials","title":"Учебники"},{"href":"/ru/actions/tutorials/migrate-to-github-actions","title":"Миграция на GitHub Actions"},{"href":"/ru/actions/tutorials/migrate-to-github-actions/manual-migrations","title":"Миграция вручную"},{"href":"/ru/actions/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-travis-ci","title":"Миграция из Travis CI"}],"documentType":"article"},"body":"# Переход с Travis CI на GitHub Actions\n\nGitHub Actions и Travis CI совместно используют несколько сходств, что помогает сделать его относительно простым для миграции GitHub Actions.\n\n## Введение\n\nЭто руководство поможет вам перейти из Travis CI в GitHub Actions. В нем сравниваются их концепции и синтаксис, описываются сходства и демонстрируются разные подходы к распространенным задачам.\n\n## Перед началом работы\n\nПрежде чем приступить к миграции GitHub Actions, полезно ознакомиться с его работой:\n\n* Краткий GitHub Actions пример, демонстрирующий задание, см. в разделе [Быстрый старт для GitHub Actions](/ru/actions/get-started/quickstart).\n* Сведения о основных GitHub Actions понятиях см. в разделе [Хранение и предоставление общего доступа к данным с артефактами рабочего процесса](/ru/actions/tutorials/store-and-share-data#passing-data-between-jobs-in-a-workflow).\n\n## Сравнение выполнения заданий\n\nЧтобы обеспечить контроль над выполнением задач CI, GitHub Actions\\_рабочий процесс\\_ использует *задания* , которые выполняются параллельно по умолчанию. Каждое задание содержит *шаги*, выполняемые в определенной последовательности. Если вам нужно выполнять действия по настройке и очистке задания, можно определить шаги для выполнения этих действий в каждом задании.\n\n## Ключевые сходства\n\nGitHub Actions и Travis CI разделяют определенные сходства, и понимание этих данных заранее может помочь сгладить процесс миграции.\n\n### Использование синтаксиса YAML\n\nCi Travis и GitHub Actions yamL используют YAML для создания заданий и рабочих процессов, и эти файлы хранятся в репозитории кода. Дополнительные сведения об GitHub Actions использовании YAML см. в разделе [Создание примера рабочего процесса](/ru/actions/tutorials/create-an-example-workflow).\n\n### Пользовательские переменные\n\nTravis CI позволяет задавать переменные и совместно использовать их между этапами. Аналогичным образом GitHub Actions можно определить переменные для рабочего процесса. Дополнительные сведения см. в разделе [Хранение сведений в переменных](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables).\n\n### Переменные по умолчанию\n\nTravis CI и GitHub Actions оба включают переменные среды по умолчанию, которые можно использовать в файлах YAML. Для GitHub Actionsэтого вы можете просмотреть их в [Справочник по переменным](/ru/actions/reference/workflows-and-actions/variables#default-environment-variables).\n\n### Обработка параллельных заданий\n\nTravis CI может использовать `stages` для параллельного выполнения заданий. Аналогичным образом GitHub Actions выполняется `jobs` параллельно. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idneeds).\n\n### Значки состояния\n\nТрэвис CI и GitHub Actions индикаторы состояния поддержки, которые позволяют указать, передается ли сборка или происходит сбой.\nДополнительные сведения см. в разделе [Добавление эмблемы состояния рабочего процесса](/ru/actions/how-tos/monitor-workflows/add-a-status-badge).\n\n### Использование матрицы\n\nTravis CI и GitHub Actions оба поддерживают матрицу, позволяя выполнять тестирование с помощью сочетаний операционных систем и пакетов программного обеспечения. Дополнительные сведения см. в разделе [Выполнение вариантов заданий в рабочем процессе](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations).\n\nНиже приведен пример сравнения синтаксиса для каждой системы.\n\n#### Синтаксис CI Travis для матрицы\n\n```yaml\nmatrix:\n  include:\n    - rvm: '2.5'\n    - rvm: '2.6.3'\n```\n\n#### GitHub Actions синтаксис матрицы\n\n```yaml\njobs:\n  build:\n    strategy:\n      matrix:\n        ruby: ['2.5', '2.6.3']\n```\n\n### Нацеливание на конкретные ветви\n\nTravis CI и GitHub Actions оба позволяют использовать ci в определенную ветвь. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/reference/workflows-and-actions/workflow-syntax#onpushbranchestagsbranches-ignoretags-ignore).\n\nНиже приведен пример синтаксиса для каждой системы.\n\n#### Синтаксис CI Travis для целевых ветвей\n\n```yaml\nbranches:\n  only:\n    - main\n    - 'mona/octocat'\n```\n\n#### GitHub Actions синтаксис для целевых ветвей\n\n```yaml\non:\n  push:\n    branches:\n      - main\n      - 'mona/octocat'\n```\n\n### Проверка подмодулей\n\nTravis CI и GitHub Actions оба позволяют контролировать, включены ли подмодулы в клон репозитория.\n\nНиже приведен пример синтаксиса для каждой системы.\n\n#### Синтаксис TRAvis CI для проверки вложенных модулей\n\n```yaml\ngit:\n  submodules: false\n```\n\n#### GitHub Actions синтаксис для проверки вложенных модулей\n\n```yaml\n- uses: actions/checkout@v6\n  with:\n    submodules: false\n```\n\n### Использование переменных среды в матрице\n\nTravis CI и GitHub Actions может добавлять пользовательские переменные в тестовую матрицу, что позволяет ссылаться на переменную на следующем шаге.\n\nВ GitHub Actionsэтом случае ключ можно использовать `include` для добавления пользовательских переменных среды в матрицу. В этом примере записи матрицы для `node-version` каждая из них настроена для использования различных значений для переменных среды `site` и `datacenter`. Затем шаг `Echo site details` использует `env: ${{ matrix.env }}` для ссылки на пользовательские переменные:\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n       include:\n         - node-version: '14.x'\n           site: \"prod\"\n           datacenter: \"site-a\"\n         - node-version: '16.x'\n           site: \"dev\"\n           datacenter: \"site-b\"\n    steps:\n      - name: Echo site details\n        env:\n          SITE: ${{ matrix.site }}\n          DATACENTER: ${{ matrix.datacenter }}\n        run: echo $SITE $DATACENTER\n```\n\n## Ключевые функции в GitHub Actions\n\nПри миграции из Travis CI рассмотрите следующие ключевые функции:GitHub Actions\n\n### Хранение секретов\n\nGitHub Actions позволяет хранить секреты и ссылаться на них в заданиях.\nGitHub Actions организации могут ограничить доступ к секретам организации. Правила защиты развертывания могут требовать ручного утверждения для рабочего процесса доступа к секретам среды. Дополнительные сведения см. в разделе [Секреты](/ru/actions/concepts/security/secrets).\n\n### Совместное использование файлов в заданиях и рабочих процессах\n\nGitHub Actions включает встроенную поддержку хранилища артефактов, позволяя совместно использовать файлы между заданиями в рабочем процессе. Вы также можете сохранять итоговые файлы и предоставлять другим рабочим процессам общий доступ к этим файлам. Дополнительные сведения см. в разделе [Понимание GitHub Actions](/ru/actions/get-started/understand-github-actions).\n\n### Размещение собственных средств выполнения\n\nЕсли для заданий требуется определенное оборудование или программное обеспечение, GitHub Actions вы можете разместить собственных средств выполнения и отправить задания в них для обработки.\nGitHub Actions также позволяет использовать политики для управления доступом к этим средствам выполнения, предоставляя доступ на уровне организации или репозитория. Дополнительные сведения см. в разделе [Управление локальными средствами выполнения](/ru/actions/how-tos/manage-runners/self-hosted-runners).\n\n### Параллельные задания и время выполнения\n\nВремя выполнения параллельных заданий и рабочих GitHub Actions процессов может отличаться в зависимости от GitHub плана. Дополнительные сведения см. в разделе [Выставление счетов и использование](/ru/actions/concepts/billing-and-usage).\n\n### Использование различных языков в GitHub Actions\n\nПри работе с различными языками GitHub Actionsможно создать шаг в задании для настройки зависимостей языка. Дополнительные сведения о работе с определенным языком см. в разделе [Создание и тестирование кода](/ru/actions/tutorials/build-and-test-code).\n\n## Выполнение скриптов\n\nGitHub Actions можно использовать `run` шаги для выполнения скриптов или команд оболочки. Чтобы использовать определенную оболочку, можно задать тип `shell` при указании пути к скрипту. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun).\n\nНапример:\n\n```yaml\nsteps:\n  - name: Run build script\n    run: ./.github/scripts/build.sh\n    shell: bash\n```\n\n## Обработка ошибок в GitHub Actions\n\nПри миграции GitHub Actionsна нее существуют различные подходы к обработке ошибок, о которых может потребоваться знать.\n\n### Обработка ошибок скрипта\n\nGitHub Actions немедленно останавливает задание, если один из шагов возвращает код ошибки. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/reference/workflows-and-actions/workflow-syntax#exit-codes-and-error-action-preference).\n\n### Обработка ошибок задания\n\nGitHub Actions использует `if` условные условия для выполнения заданий или шагов в определенных ситуациях. Например, вы можете запустить выполнение некоторого шага, когда другой шаг приводит к `failure()`. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/reference/workflows-and-actions/workflow-syntax#example-using-status-check-functions). Вы также можете использовать [`continue-on-error`](/ru/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontinue-on-error) для предотвращения остановки выполнения рабочего процесса при сбое задания.\n\n## Синтаксис миграции для условных конструкций и выражений\n\nДля выполнения заданий в условных выражениях Travis CI и GitHub Actions совместного использования аналогичного `if` синтаксиса условия.\nGitHub Actions позволяет использовать условное `if` условие, чтобы предотвратить выполнение задания или шага, если условие не выполнено. Дополнительные сведения см. в разделе [Оценка выражений в рабочих процессах и действиях](/ru/actions/reference/workflows-and-actions/expressions).\n\nВ этом примере показано, как условная конструкция `if` может управлять выполнением шага:\n\n```yaml\njobs:\n  conditional:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo \"This step runs with str equals 'ABC' and num equals 123\"\n        if: env.str == 'ABC' && env.num == 123\n```\n\n## Этапы миграции и шаги\n\nГде Travis CI использует *этапы* для выполнения *шагов*, содержит GitHub Actions, \\_\\_ которые выполняют *действия*. В предварительно созданных действиях [GitHub Marketplace](https://github.com/marketplace?type=actions)можно найти или создать собственные действия. Дополнительные сведения см. в разделе [Повторное выполнение автоматизации](/ru/actions/how-tos/reuse-automations).\n\nНиже приведен пример синтаксиса для каждой системы.\n\n### Синтаксис CI Travis для этапов и шагов\n\n```yaml\nlanguage: python\npython:\n  - \"3.7\"\n\nscript:\n  - python script.py\n```\n\n### GitHub Actions синтаксис для шагов и действий\n\n```yaml\njobs:\n  run_python:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/setup-python@v5\n        with:\n          python-version: '3.7'\n          architecture: 'x64'\n      - run: python script.py\n```\n\n## Кэширование зависимостей\n\nTravis CI и GitHub Actions позволяет вручную кэшировать зависимости для последующего повторного использования.\n\nВ этих примерах показан синтаксис кэша для каждой системы.\n\n### Синтаксис TRAvis CI для кэширования\n\n```yaml\nlanguage: node_js\ncache: npm\n```\n\n### Синтаксис GitHub Actions для кэширования\n\n```yaml\n- name: Cache node modules\n  uses: actions/cache@v4\n  with:\n    path: ~/.npm\n    key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}\n    restore-keys: v1-npm-deps-\n```\n\n## Примеры распространенных задач\n\nВ этом разделе сравнивается, как GitHub Actions и Трэвис CI выполняют распространенные задачи.\n\n### Настройка переменных среды\n\nВ задании можно создавать пользовательские GitHub Actions переменные среды.\n\n#### Синтаксис CI Travis для переменной среды\n\n```yaml\nenv:\n  - MAVEN_PATH=\"/usr/local/maven\"\n```\n\n#### GitHub Actions Рабочий процесс с переменной среды\n\n```yaml\njobs:\n  maven-build:\n    env:\n      MAVEN_PATH: '/usr/local/maven'\n```\n\n### Сборка с помощью Node.js\n\n#### Travis CI для строительства с Node.js\n\n```yaml\ninstall:\n  - npm install\nscript:\n  - npm run build\n  - npm test\n```\n\n#### GitHub Actions рабочий процесс для создания с помощью Node.js\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - name: Use Node.js\n        uses: actions/setup-node@v7\n        with:\n          node-version: '16.x'\n      - run: npm install\n      - run: npm run build\n      - run: npm test\n```\n\n## Следующие шаги\n\nДополнительные сведения о основных функциях GitHub Actionsсм. в разделе [Написание рабочих процессов](/ru/actions/how-tos/write-workflows)."}