Как триггеры добавляются в очередь в облачной сборке Google? - PullRequest
0 голосов
/ 17 января 2020

Триггер сборки должен ждать до тех пор, пока предыдущий триггер не завершит свое выполнение тем же репо.

Если я повторю два раза до репо, триггер будет выполнен дважды в одно и то же время. Я не хочу, чтобы это произошло.

Как заставить облачный триггер ждать предыдущее задание триггера?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Для этого нет ничего «готового», как указано выше.

Единственное, о чем я могу подумать:

  1. добавление начального шага, который запрашивает сборки, использующие gcloud builds list и фильтрацию по идентификатору триггера (вам нужно установить это вручную, так как я не думаю, что вы можете получить это из самой сборки как переменную). Затем проверьте, работает ли более одной сборки, спите для чего-либо и проверьте снова. Единственное, на что вам следует обратить внимание - после повторной проверки, если новая сборка начинается, вам нужно иметь способ различать это (опять же, поскольку мы не знаем идентификатор сборки) и вашу сборку ... или вы в итоге получится непрерывное l oop и никаких сборок.

  2. Идея состоит в том, чтобы иметь корзину хранения и каждую сборку для создания файла с каким-то соглашением об именах, поэтому мы может построить систему "очереди". В начале каждой сборки мы монтируем хранилище, ищем любые другие файлы, а затем создаем наши.

Пример :

  • Первая сборка - других сборок нет, мы создаем файл 'build-name-1 "... затем мы начинаем сборку и в конце удаляем этот файл.
  • Вторая сборка (пока выполняется первая), монтируем хранилище, проверяем другие файлы, видим, что есть один файл, поэтому мы создаем новый файл с приращением последнего числа (build-name-2) и спим ... мы ждем, пока этого файла не будет, и затем мы можем начать нашу сборку и в конце удалить файл снова.
  • (и так в течение трех, четырех и т. Д. c)
0 голосов
/ 17 января 2020

Вы должны реализовать эту конфигурацию и лог c. Он должен был бы оценить, была ли сборка запущена и запущена, а затем ждать, пока она не завершится sh.

Может быть, что-то можно сделать, чтобы проверить с помощью buildSteps и waitFor или с помощью собственного компоновщика .

Комбинация между вызовами к API и перечислению Cloud Builds и их статусов, реализуя, возможно, waitFor в вашем конфиге, чтобы он проверял и затем продолжил сборку, как только закончится другая.

Все зависит от того, сколько сборок вы отправляете. У меня нет четкого представления о том, как вы можете назначить приоритет в очереди, как это было бы go FIFO.

Кто-то еще добавил аналогичный вопрос здесь

Надеюсь, это поможет.

...