В Azure Devops я хочу, чтобы мой конвейер yaml выполнялся только после завершения предыдущего выполнения того же конвейера. - PullRequest
0 голосов
/ 25 апреля 2020

Я попробовал batch: true параметр, описанный здесь , но похоже:

  • игнорирует коммиты, которые выдвигаются во время работы конвейера. Я хочу, чтобы последний коммит инициировал конвейер после , текущий прогон этого конвейера завершил
  • , чтобы он игнорировался, когда вы публикуете sh непосредственно из CI, нажимая build

Кто-то нашел способ настроить конвейер для работы, как я описал.

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете попробовать добавить Invoke REST API проверку в пуле агентов. Остальные API получат предыдущую сборку и оценят ее статус. Поэтому, когда новая сборка ставится в очередь с целью нахождения пула агентов. Будет вызван API REST Invoke, эта новая сборка начнется только тогда, когда ответ остальных API будет оценен как true.

Пожалуйста, проверьте следующие шаги:

1, создать сервисное подключение к вашей azure организации devops.

Go Настройка проекта -> Сервисные подключения в разделе "Конвейеры" -> Нажмите новое сервисное соединение -> выберите Generi c, чтобы создать универсальное c сервисное соединение. enter image description here

Затем отредактируйте тип подключения службы, как показано на снимке экрана ниже. Отметьте здесь , чтобы получить токен личного доступа.

enter image description here

2, добавить Invoke REST API проверить пул агентов **.

Go Настройка проекта -> Пулы агентов в разделе "Конвейеры" -> Выберите пул агентов - -> Нажмите 3 точки -> Нажмите Одобрения и проверки . enter image description here.

3, нажмите « + » -> Выбрать Вызвать REST API

enter image description here

4, Отредактируйте Invokde Rest API

Выберите универсальное c сервисное соединение с вашими azure devops, созданными на первом шаге.

Установите следующие поля:

  • Суффикс URL и параметры : _apis/build/builds?definitions=the DefinitionId of your pipeline&$top=2&queryOrder=queueTimeDescending&api-version=5.1

  • Успех критерии : eq(root['value'][1]['status'], 'completed')

пожалуйста, проверьте здесь для получения дополнительной информации о сборке остальные API.

enter image description here

Примечание. Поскольку проверка API Invoke Rest настроена на область действия пула агентов. Это может повлиять на другие конвейеры, нацеленные на этот пул агентов. Например, если желаемый конвейер yaml ожидает завершения предыдущего запуска. И теперь другой конвейер, нацеленный на этот же пул агентов, запущен, ему придется ждать завершения предыдущего запуска желаемого конвейера yaml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...