У меня есть заурядная установка Jenkins с использованием multifranch / pipeline / Jenkinsfile.
Проект, который я создаю, является проектом C / C ++, который должен быть скомпилирован во многих операционных системах. и архитектуры. Для этого у меня есть группа узлов (то есть агентов или подчиненных), зарегистрированных в jenkins, каждый из которых выполняет сборку указанного проекта для конкретной комбинации операционной системы и архитектуры.
Многие из этих сборок выполняются параллельно, что является здравым смыслом. Моя проблема теперь такова: я хотел бы остановить все незавершенные суб-сборки на всех узлах, когда ошибка происходит где-либо в этой общей многоплатформенной сборке. Например, предположим, что я создаю код для 3 вещей:
- macos
- Linux aarch64
- windows 10
Если MacOS не работает, я хотел бы автоматически отменить linux и windows, даже если в процессе , потому что я точно знаю, что полная сборка не удастся: я не буду быть в состоянии сделать релиз из тех, у кого есть некоторые недостающие части.
В настоящее время, если Macos терпит неудачу, linux и windows с радостью продолжают сборку, тратя слоты на другие рабочие места в очереди, электричество и время. .
Любые подсказки приветствуются!
Обновление 1: Решение для бедного человека состоит в том, чтобы сериализовать вспомогательные сборки в долгой поэтапной манере , Но это займет очень много времени, чтобы завершить сборку. Так что это не вариант для меня
Обновление 2: более ощутимое объяснение:
stages {
stage('Checkout') {
...
}
stage('Build') {
parallel {
stage ('linux') {
...
}
stage ('windows') {
...
}
stage ('mac') {
...
}
}
}
stage('Archive and release') {
...
}
}
Если любой из ма c, windows или linux сборка не удалась, я хотел бы, чтобы остальные тоже были немедленно прерваны, а не ждать завершения