#build #continuous-integration #teamcity
#сборка #непрерывная интеграция #teamcity
Вопрос:
у нас есть ситуация, когда у нас одновременно выполняется много сборок, но нам нужно сериализовать поступающие результаты. На различных контрольных точках в сборке мы в основном говорим: «если что-то попало в основную ветку, завершите это»… что мы действительно хотим сделать, так это сказать: «если что-то попало в основную ветку, вернитесь к первому шагу».
Есть ли какой-либо способ с teamcity перейти к другому шагу сборки?
т.Е. Создать цикл внутри сборки? (не помещая всю сборку в один шаг)
Ответ №1:
Попробуйте построить цепочки
Они позволяют указать порядок, в котором должны выполняться проекты, так что, если у вас есть проекты A, B и C, триггер B — это успешное завершение A, а триггер C — успешное завершение B.
A => B => C
Они также позволяют вам разветвляться, так что успех A может вызвать B amp; C, а D переходит, когда оба B amp; C завершены:
B
A => => D
C
Комментарии:
1. Спасибо, но главное, мне нужно, чтобы это было циклически — могу ли я перейти A => B => A?
2. Я не уверен … есть несколько разных триггеров, таких как триггеры повторных попыток и т. Д., Но, Похоже, должен быть более простой способ. Вы следите за тем, чтобы что-то появилось в основной ветке, и хотите перезапустить сборку, если это так? Одна мысль заключается в том, что вы могли бы попробовать настроить период ожидания, чтобы лучше улавливать поступающие изменения. Затем убедитесь, что шаг A выполняется быстро, а шаг B (при условии, что это что-то вроде автоматического развертывания или интеграционных тестов) имеет более длительный период ожидания или выполняется автоматически каждый час.
Ответ №2:
-
Если вы хотите сделать это в механизме A => B => A, вы можете попробовать сделать это в цепочке сборки.
A — ваша первая сборка. B — ваша тестовая сборка. C — это ваша зависимая сборка.
B зависит от A, а C зависит от B
Вам нужно создать сборку B, которая опрашивает репозиторий и проверяет, есть ли какие-либо изменения после запуска сборки A. Если есть какие-либо изменения, он завершается с ошибкой, и поэтому сборка C не запускается, а цепочка сборки завершается с ошибкой.Однако из-за новых изменений запускается build A и создается целая новая цепочка сборки.
-
Вы также можете изменить свой опрос vcs, чтобы установить период ожидания. Например, вы можете изменить свою сборку, чтобы подождать 5 минут до ее запуска, просто чтобы проверить, есть ли какие-либо новые изменения. Если есть новые изменения, период ожидания сбрасывается
-
Лучшим способом было бы опрашивать репозиторий за более длительный период, чем время, затраченное на вашу сборку.Например, если ваша общая сборка рассчитана на 10 минут, затем опросите репозиторий с интервалом в 15 минут. Однако это зависит от того, чего вы хотите достичь, и может не соответствовать вашим целям
-
Вы также можете использовать общие ресурсы Teamcity, чтобы убедиться, что в любой момент времени выполняется только одна цель