Какова современная лучшая практика для сборок с несколькими конфигурациями (с Jenkins)?
Я хочу поддерживать несколько веток и несколько конфигураций.
Например, для каждой версии V1, V2Программное обеспечение, которое я хочу, нацелено на платформы P1 и P2.
Нам удалось установить многоотраслевые декларативные конвейеры.Каждая сборка имеет собственный докер, поэтому его легко поддерживать на нескольких платформах.
pipeline {
agent none
stages {
stage('Build, test and deploy for P1) {
agent {
dockerfile {
filename 'src/main/docker/Jenkins-P1.Dockerfile'
}
}
steps {
sh buildit...
}
}
stage('Build, test and deploy for P2) {
agent {
dockerfile {
filename 'src/main/docker/Jenkins-P2.Dockerfile'
}
}
steps {
sh buildit...
}
}
}
}
Это дает одну работу для нескольких платформ, но для каждой платформы нет отдельного красного / синего статуса.Есть хороший аргумент, что это не имеет значения, поскольку вы не должны выпускать, если сборка не работает для всех платформ.
Однако я хотел бы иметь отдельный индикатор состояния для каждой конфигурации.Это говорит о том, что мне следует использовать сборку с несколькими конфигурациями, которая запускает параметризованную сборку для каждой конфигурации, как показано ниже (и связанный вопрос ):
pipeline {
parameters {
choice(name: 'Platform',choices: ['P1', 'P2'], description: 'Target OS platform', )
}
agent {
filename someMagicToGetDockerfilePathFromPlatform()
}
stages {
stage('Build, test and deploy for P1) {
steps {
sh buildit...
}
}
}
}
С этим связано несколько проблем:
- Декларативный конвейер имеет больше ограничений по сценарию
- Сборки с несколькими конфигурациями не могут запускать декларативные конвейеры (даже с плагином параметризованных триггеров, который я получаю, "проект не компилируется").
Здесь также возникает вопрос, как использовать параметры в декларативных конвейерах?
Существует ли стратегия, которая дает лучшее из обоих миров, а именно:
- конвейер в виде кода
- отдельные индикаторы состояния
- ограниченное повторение?