Привет ! Меня зовут Ксавье Жувено, и в этом небольшом посте мы увидим, как создать многоплатформенное задание в Azure Pipelines.

Самореклама: Другие статьи вы можете найти на моем сайте 😉

Проблемный

При настройке сред непрерывной интеграции и доставки в Azure Pipelines или в любой системе CI/CD вы можете захотеть использовать несколько сред/операционных систем для тестирования своей программы. Действительно, чем больше платформ вы можете настроить, тем больше потенциальных клиентов вам доступно.

Но одна программа не обязательно ведет себя одинаково в зависимости от операционной системы. Более того, если для создания вашей программы в конкретной среде вам потребуется этап компиляции, который также может зависеть от операционной системы.

Решение

В зависимости от ваших потребностей, вам доступны несколько решений.

Одна работа для одной операционной системы

Первое решение состоит в том, чтобы указать операцию для каждого шага/задания в процессе Azure Pipelines. Это решение хорошо адаптировано, если в зависимости от операционной системы ваш скрипт сильно отличается.

jobs:
  - job: My_Job
    pool:
      - vmImage: '<operating_system>'

Вы можете получить доступ к списку всех доступных операционных систем здесь.

С помощью этого решения вы без проблем определите операционную систему для каждого задания Azure Pipelines. Но если процессы одинаковы (или очень похожи), вы можете посмотреть на следующее доступное решение 😉

Один и тот же процесс во всех операционных системах

Это решение действительно удобно, если у вас есть общие процессы в разных операционных системах, которые вы хотите использовать.

Он состоит в том, чтобы сказать Azure Pipelines буквально запустить одно и то же задание в нескольких конфигурациях.

jobs:
  - job: My_Job
    strategy:
      matrix:
        mac:
          imageName: 'macOS-10.15'
        linux_ubuntu_16_04:
          imageName: 'ubuntu-16.04'
        linux_ubuntu_18_04:
          imageName: 'ubuntu-18.04'
        linux_ubuntu_20_04:
          imageName: 'ubuntu-20.04'
        windows_vs_2017:
          imageName: 'vs2017-win2016'
        windows_vs_2019:
          imageName: 'windows-2019'
    pool:
      vmImage: $(imageName)

С такой конфигурацией ваша работа будет дублироваться в 6 средах и запускать свой собственный скрипт в каждой из этих сред.

Это очень удобно, чтобы избежать дублирования, а также может быть объединено со следующим пунктом, если от одной среды к другой требуется лишь небольшая модификация.

Проверка ОС

В файле конфигурации Azure Pipeline вы можете указать некоторые условия, указывающие, следует ли запускать сценарий или задание (Документация по условиям Azure Pipelines).

Используя это условие, вы также можете указать шаг задания для запуска только в определенной среде, например:

- script: |
    echo "Hello World from OSX"
  displayName: Install dependencies
  condition: and(succeededOrFailed(), eq(variables['Agent.OS'], 'Darwin'))

Используя предопределенную переменную Agent.OS, мы получаем текущую операционную систему и используем ее в условии, чтобы шаг или задание запускалось только в определенной среде.

И с помощью этой последней техники вы теперь можете выполнять любое задание в любой операционной системе, которую вы хотите, с помощью Azure Pipelines.

Спасибо всем за прочтение этой статьи, и до моей следующей статьи, хорошего дня 😉

Интересные ссылки

Первоначально опубликовано на http://10xlearner.com 11 ноября 2020 г.