У меня есть несколько заданий, работающих с одним внешним ресурсом (сервером). Первое задание развертывает приложение в среде, второе выполняет тесты в этой среде, третье выполняет интеграционные тесты в этой среде.
Я знаю, что есть опция группы ресурсов . Но это блокирует только рабочие места. Если два трубопровода может работать одновременно мне нужно выполнить job1
, job2
, job3
от первого трубопровода и только тогда , когда первого ресурса выхода трубопровода - второй трубопровод может начать jobs1-3
. Есть ли способ добиться этого? Есть другие рабочие места в процессе - они должны работать одновременно.
Я думаю , что это может быть реализован через
needs
иresource_group
ключевые слова и gitlab API.Каждое задание получает идентификатор конвейера, которому оно принадлежит как
predefined-variable
. Если вы используете API gitlab, вы можете увидеть состояние других заданий в конвейере. Если вы можете использовать этот статусneeds
иresource_group
ключевые слова, я думаю, вы можете достичь того, что вы хотели. Смотрите описание кода ниже и его комментарии для более подробной информации.(Я не проверял это сам, поэтому этот метод нуждается в обзоре.)
Referenecs:
источник
traffic_light
задании, я должен дождаться окончания выполнения задания 1-3 в параллельном конвейере. Что мне не нравится в этом подходе - ваши минуты будут потрачены на проверку состояния параллельного конвейера.traffic_light
использованияtags
ключевого слова. Сегодня многие поставщики облачных услуг предоставляют бесплатные экземпляры уровней, которых достаточно для выполнения простых заданий ожидания, таких какtraffic_light
.