Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.
Введение
Azure Pipelines и GitHub Actions позволяют создавать рабочие процессы, которые автоматически выполняют сборку, тестирование, публикацию, выпуск и развертывание кода. Azure Pipelines и GitHub Actions используют некоторые сходства в конфигурации рабочего процесса.
- Файлы конфигурации рабочего процесса записываются в YAML и хранятся в репозитории кода.
- В рабочем процессе может быть одно или несколько заданий.
- Задания включают один или несколько шагов или отдельных команд.
- Шаги или задачи можно повторно использовать и предоставлять сообществу.
Дополнительные сведения см. в разделе Общие сведения о GitHub Actions.
Основные различия
При миграции с Azure Pipelines необходимо учитывать следующие различия.
- Azure Pipelines поддерживает устаревший классический редактор, который позволяет определить конфигурацию CI в редакторе графического пользовательского интерфейса вместо создания определения конвейера в файле YAML. GitHub Actions использует файлы YAML для определения рабочих процессов и не поддерживает графический редактор.
- Azure Pipelines позволяет пропускать некоторые структуры в определениях заданий. Например, если у вас есть только одно задание, вам не нужно определять само задание, достаточно определить его шаги. GitHub Actions требует явной настройки, и в структуре YAML нельзя делать пропуски.
- Azure Pipelines поддерживает этапы, определенные в файле YAML, которые можно использовать для создания рабочих процессов развертывания. GitHub Actions требует разделять этапы на отдельные файлы рабочих процессов YAML.
- Локальные агенты сборки Azure Pipelines можно выбирать с определенными возможностями. Локальные средства выполнения GitHub Actions можно выбирать с определенными метками.
Миграция заданий и шагов
Задания и шаги в Azure Pipelines очень похожи на задания и шаги в GitHub Actions. В обеих системах задания имеют следующие характеристики.
- Задания содержат ряд шагов, которые выполняются последовательно.
- Задания выполняются на отдельных виртуальных машинах или в отдельных контейнерах.
- По умолчанию задания выполняются параллельно, но можно настроить их последовательное выполнение.
Миграция шагов скрипта
Скрипт или команду оболочки можно выполнять как шаг рабочего процесса. В Azure Pipelines шаги скрипта можно указать с помощью ключа script
или с использованием ключей bash
, powershell
или pwsh
. Скрипты также можно указать в качестве входных данных задачи Bash или задачи PowerShell.
В GitHub Actions все скрипты указываются с помощью ключа run
. Чтобы выбрать конкретную оболочку, можно указать ключ shell
при предоставлении скрипта. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Ниже приведен пример синтаксиса для каждой системы.
Azure Pipelines | GitHub Actions |
---|---|
|
|
Различия в обработке ошибок скрипта
В Azure Pipelines скрипты можно настроить так, чтобы они выдавали ошибку, если какие-либо выходные данные отправляются в stderr
. GitHub Actions не поддерживает эту конфигурацию.
GitHub Actions настраивает оболочки для "завершения работы при первой ошибке", когда это возможно, поэтому если одна из команд в скрипте завершает работу с кодом ошибки, это приводит к немедленной остановке скрипта. В отличие от этого, в Azure Pipelines необходима явная настройка для немедленного выхода при ошибке. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Различия в оболочке по умолчанию в Windows
В Azure Pipelines оболочкой по умолчанию для скриптов на платформах Windows платформах является командная оболочка (cmd.exe). В GitHub Actionsоболочкой по умолчанию для скриптов на платформах Windows является PowerShell. PowerShell имеет некоторые различия во встроенных командах, расширении переменных и управлении потоком.
Если вы выполняете простую команду, то можете запустить скрипт командной оболочки в PowerShell без каких-либо изменений. Но в большинстве случаев вам потребуется обновить скрипт с учетом синтаксиса PowerShell или указать GitHub Actions, что скрипт следует запускать с помощью командной оболочки вместо PowerShell. Это можно сделать, задав для shell
значение cmd
.
Ниже приведен пример синтаксиса для каждой системы.
Azure Pipelines | GitHub Actions |
---|---|
|
|
Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Миграция условных выражений и синтаксис выражений
Azure Pipelines и GitHub Actions могут выполнять шаги условно. В Azure Pipelines условные выражения задаются с помощью ключа condition
. В GitHub Actionsусловные выражения задаются с помощью ключа if
.
Azure Pipelines использует функции в выражениях для условного выполнения шагов. В отличие от этого, GitHub Actions использует нотацию infix. Например, необходимо заменить функцию eq
в Azure Pipelines оператором ==
в GitHub Actions.
Ниже приведен пример синтаксиса для каждой системы.
Azure Pipelines | GitHub Actions |
---|---|
|
|
Дополнительные сведения см. в разделе Выражения.
Зависимости между заданиями
И Azure Pipelines, и GitHub Actions позволяют задавать зависимости для задания. В обеих системах задания по умолчанию выполняются параллельно, но зависимости заданий можно указывать явным образом. В Azure Pipelines это делается с помощью ключа dependsOn
. В GitHub Actionsэто делается с помощью ключа needs
.
Ниже приведен пример синтаксиса для каждой системы. Рабочие процессы запускают первое задание с именем initial
, и после завершения этого задания будут выполняться два задания с именами fanout1
и fanout2
. И наконец, после завершения этих заданий, будет выполняться задание fanin
.
Azure Pipelines | GitHub Actions |
---|---|
|
|
Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Миграция задач в действия
Azure Pipelines использует задачи, являющиеся компонентами приложения, которые можно повторно использовать в нескольких рабочих процессах. GitHub Actions использует действия, которые можно использовать для выполнения задач и настройки рабочего процесса. В обеих системах можно указать имя задачи или действия для выполнения, а также все необходимые входные данные в виде пар "ключ-значение".
Ниже приведен пример синтаксиса для каждой системы.
Azure Pipelines | GitHub Actions |
---|---|
|
|
Вы можете найти действия для использования в рабочих процессах в GitHub Marketplace или создать свои собственные действия. Дополнительные сведения см. в разделе Создание действий.