TeamCity API. Не запускайте новую сборку, если сборка уже выполняется

#teamcity #jira

#teamcity #jira

Вопрос:

Как предотвратить запуск ветки кода сборки, если сборка кода из ветки уже выполняется?

Сборка выполняется через API из JIRA Automation (отправить запрос Webhook) в:
http://teamcity.url/app/rest/buildQueue?buildTypeId=<buildTypeId>

Тело запроса:

 <build branchName="{{issue.fields.branch}}">
    <buildType id="<buildTypeId>"/>
</build>
 

Проблема: поскольку JIRA ничего не знает о том, выполняется сборка на TeamCity или нет, JIRA снова запускает сборку, если правило было выполнено

Комментарии:

1. crowdfunder.co.uk/uploads/projects/261847.jpg

2. попробуйте использовать зависимость от моментального снимка. Я думаю, это поможет вам

3. помогло ли это вам? есть новости?

4. мы не пробовали, как мы попробуем ваше решение — я дам вам знать

Ответ №1:

TL; DR

Я проверил, и это работает

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

Создайте конфигурацию B, которая зависит от A как Slapshot dependency с параметрами

  • Do not run new build if there is a suitable one — проверено
  • Only use successful builds from suitable ones — проверено
  • Run build on the same agent — снят флажок
  • Make build start of faild — оба

введите описание изображения здесь

Как это работает? Вы запустите конфигурацию B. B зависит от A. B проверил, что у A уже есть сборка с некоторой веткой и фиксацией, поэтому нет необходимости запускать еще одну, так что давайте закончим.

если у A есть новый коммит, то B видит, что у A есть изменения, поэтому давайте начнем новую сборку A, дождемся завершения.

Если A потерпел неудачу, то B также потерпит неудачу.

p.s. теперь вы должны вызвать B вместо A.