Цель `serial: true` для собрания

У меня вопрос о том, что serial: true делает в отношении рабочих мест. Это кажется немного избыточным, поскольку serial_groups уже, кажется, контролирует последовательное выполнение нескольких заданий. Но в то же время внутри plan есть такие конструкции, как do, которые последовательно выполняют шаги плана.

В документации сказано следующее:

serial: boolean Необязательно. По умолчанию false. Если установлено значение true, сборки будут помещаться в очередь и выполняться одна за другой, а не выполняться параллельно.

В разделе «Концепции» посетители, кажется, определяют «сборку» как

Экземпляр выполнения плана работы называется сборкой.

В этом случае, если вы не укажете шаги сборки внутри do, будут ли они выполняться одновременно?


person shinything    schedule 22.09.2017    source источник


Ответы (1)


serial: true означает, что конкретное задание будет запускать только одну сборку за раз, однако размещение нескольких заданий в одном serial_group означает, что все задания в этой группе будут выполняться последовательно по отношению друг к другу.

Например, если я определю задание job1 как serial: true и быстро выполню четыре сборки job1, то первая сборка будет запущена, а сборки 2, 3 и 4 будут ждать в состоянии pending. Когда сборка 1 завершится, сборка 2 будет запущена, а сборки 3 и 4 будут ждать в состоянии pending и так далее.

Если определить job1, job2 и job3 в serial_group, и я отключу их все одновременно, то одно из этих заданий, скажем, job2, будет запущено, а остальные будут ждать в состоянии pending. Затем другое задание, допустим, job1 будет запущено, и job3 будет ждать в pending состоянии, пока job2 не завершится, а затем job3 будет запущено.

person Josh Zarrabi    schedule 24.09.2017
comment
Так будет ли порядок заданий внутри одной серийной группы зависеть от порядка, в котором они были объявлены? Например, если бы я написал job1, job2, job3 в этом порядке и определил их в одном и том же serial_group, будут ли они всегда выполняться в этом порядке? - person shinything; 25.09.2017
comment
Думаю, да, наверное, не стоило ставить их в случайном порядке в ответе ... - person Josh Zarrabi; 25.09.2017
comment
так что просто для пояснения, если serial:true не указан, шаги внутри задания будут выполняться одновременно? - person shinything; 28.09.2017
comment
Нет. serial:true не имеет ничего общего с шагами внутри задания. Шаги могут выполняться одновременно с aggregate блоками. concourse.ci/single-page.html#aggregate-step. serial:true означает, что каждая отдельная сборка определенного задания будет запускать только одну сборку за раз. Таким образом, с serial:true вы можете trigger задание много раз, и оно не будет запускать более одного экземпляра этого задания за раз. - person Josh Zarrabi; 29.09.2017