Teamcity — вернуться к предыдущему шагу

#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:

  1. Если вы хотите сделать это в механизме A => B => A, вы можете попробовать сделать это в цепочке сборки.

    A — ваша первая сборка. B — ваша тестовая сборка. C — это ваша зависимая сборка.

    B зависит от A, а C зависит от B

    Вам нужно создать сборку B, которая опрашивает репозиторий и проверяет, есть ли какие-либо изменения после запуска сборки A. Если есть какие-либо изменения, он завершается с ошибкой, и поэтому сборка C не запускается, а цепочка сборки завершается с ошибкой.Однако из-за новых изменений запускается build A и создается целая новая цепочка сборки.

  2. Вы также можете изменить свой опрос vcs, чтобы установить период ожидания. Например, вы можете изменить свою сборку, чтобы подождать 5 минут до ее запуска, просто чтобы проверить, есть ли какие-либо новые изменения. Если есть новые изменения, период ожидания сбрасывается

  3. Лучшим способом было бы опрашивать репозиторий за более длительный период, чем время, затраченное на вашу сборку.Например, если ваша общая сборка рассчитана на 10 минут, затем опросите репозиторий с интервалом в 15 минут. Однако это зависит от того, чего вы хотите достичь, и может не соответствовать вашим целям

  4. Вы также можете использовать общие ресурсы Teamcity, чтобы убедиться, что в любой момент времени выполняется только одна цель