Подождите, пока метка VCS достигнет значения sh, прежде чем запускать следующую сборку в цепочке TeamCity - PullRequest
1 голос
/ 26 мая 2020

Допустим, у меня есть две сборки в моей цепочке сборок TeamCity, обе используют одну и ту же VCS root. Сборка 2nd начинается после завершения 1st ( 2nd имеет зависимость снимка от 1st ) .

Сборка 1st использует VS C маркировку , а после завершения сборки добавляет новый тег в репозиторий Git.

Проблема, с которой я столкнулся, заключается в том, что сборка 2nd не получает этот новый тег. Например, если я запустил git describe в качестве самого первого шага сборки 2nd , он вернет «предыдущее» значение тега. Я считаю, что причиной такого «запаздывания» является тот факт, что согласно документации TeamCity:

Процесс [маркировки] происходит в фоновом режиме после завершения сборки

Итак, когда сборка 2nd выполняет проверку VCS, в репозитории Git еще нет нового тега (, поскольку он применяется в фоновом режиме, очевидно, после 2nd начинается сборка ), поэтому для сборки 2nd тег «previous» фактически является последним из доступных.

Есть ли способ запустить 2nd только сборка после маркировка VCS выполнена?

Я могу подумать о добавлении фиктивного шага с некоторым тайм-аутом, чтобы гарантировать, что процесс маркировки имеет достаточно времени для завершения sh, и только затем запустите сборку 2nd , но это выглядит уродливым костылем.

1 Ответ

2 голосов
/ 03 июня 2020

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

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

Вот рабочий процесс для большей ясности:

  1. The 1-я начинается сборка
  2. Один из шагов сборки явно добавляет новый тег с помощью интерфейса командной строки и Git. Новый тег теперь находится в моем Git репозитории
  3. Сборка 1st завершается, и это вызывает 2nd начало сборки
  4. The 2-я сборка запускается и получает новый тег без проблем

Поскольку это обходной путь, я не буду отмечать этот ответ как принятый.

...