Azure Devops задерживается сборка Continuous Integration - PullRequest
0 голосов
/ 25 февраля 2020

У меня сейчас установлена ​​Azure Devops, которую я настраиваю для автоматической сборки и тестирования. Я хотел бы включить триггер непрерывной интеграции для процесса сборки, однако наши стандарты регистрации требуют, чтобы разные части нашего кода были проверены отдельно друг от друга.

Например: мы используем автоматически генерируемые nettiers код, поэтому всякий раз, когда билет требует изменения базы данных, база кода nettiers обновляется. Поскольку это автоматически сгенерированный код, он регистрируется отдельно от ручных модификаций с комментарием, указывающим, что это автоматически сгенерированная регистрация.

Сборка завершится неудачей, если в ней нет ни nettiers, ни ручных модификаций проверено. Однако при включенной функции непрерывной интеграции при первой регистрации запускается сборка, в которой будет отсутствовать вторая половина изменений, которые проверяются через пару минут.

Идеальный способ Я хотел бы исправить это, введя 5-минутную задержку между тем, когда сборка CI впервые запускается, и когда она фактически начинает свою работу. Еще лучше было бы, если бы каждая последующая регистрация отменила бы первую сборку и запустила новый таймер со своей собственной сборкой для учета любых последующих проверок.

Альтернативой было бы решить проблему, возможно, иметь ворота на запрос рабочего элемента. Однако мне не удалось выяснить, как реализовать одну из этих идей или предложить другие варианты. Ворота, основанные на запросах, по-видимому, доступны только в конвейерах выпуска, а не в сборках.

Кто-нибудь там решал подобную проблему, или есть мысли о том, как решить или обойти эту проблему?

1 Ответ

0 голосов
/ 26 февраля 2020

Azure Задержки Devops отложенной сборки Continuous Integration

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

В качестве обходного пути, мы могли бы сгенерировать код и зарегистрироваться в некоторой указанной папке, используя nettiers, например \NettiersGenerated.

Затем мы могли бы исключить эту папку с помощью Path filters в Enable continuous integration:

enter image description here

В этом случае сгенерированный код не будет запускать конвейер сборки.

Обновление:

Требуется, чтобы сначала был проверен код nettiers (что было бы трудно осуществить)

Да, согласен с вами. Если сборка не удастся, если в ней нет проверенных модификаций nettiers и вручную, мой первый действительно не достаточно разумен.

В качестве другого обходного пути, мы могли бы использовать счетчик Azure DevOps и получить Оставшаяся часть счетчика выполняется через сценарий powershell. Построить конвейер, только если число четное, иначе отменить сборку, например:

Выражение счетчика, например

variables:
  internalBuildNumber: 1
  semanticBuildNumber: $[counter(variables['internalBuildNumber'], 0)]

Сценарии Powershell:

$value=$(semanticBuildNumber)
switch($value)
  {
    {($_ % 2) -ne 0} {"Go on build pipeline"}
    {($_ % 2) -eq 0}
      {
         Write-Host "##vso[task.setvariable variable=agent.jobstatus;]canceled"
         Write-Host "##vso[task.complete result=Canceled;]DONE"
      }
  }

В этом случае конвейер будет построен при его повторном запуске.

Надеюсь, это поможет.

...