У меня есть проблема с планом сборки в цепочке сборки, которая меня очень беспокоит.
У меня есть простая цепочка сборки A -> B
, где
- A работает очень быстро (менее минуты) — в основном он извлекает базу данных из производственной системы. Невозможно определить, будет ли полученный артефакт идентичен предыдущему результату до завершения обработки. В настоящее время время сборки запланировано.
- B очень медленный (5-6 часов) — он объединяет вывод из A плюс ряд других источников в большое количество артефактов. В настоящее время он имеет зависимость моментального снимка от A, а также зависимость от других источников.
Я хотел бы избежать запуска B без необходимости, т.е. если какие-либо входные данные для B изменились, но как мне это сделать?
Я могу потерпеть неудачу/отменить A, если он обнаружит, что результаты не изменились, но это приведет к «сбою зависимости моментального снимка» для B, поэтому, если какие-либо другие другие источники ввода для B изменятся, он не будет восстанавливать результаты...
Есть ли способ остановить или прервать сборку A, чтобы сборка B не запускалась?
EDIT: у меня (возможно) есть идея: я мог бы позволить A проверить полученный артефакт в SCM — если он отличается от предыдущей версии — и позволить этому управлять триггер B, у которого уже есть ряд других источников в SCM. Насколько я понимаю, это не будет частью той же цепочки сборки, но это следующая лучшая вещь...