У нас есть много-много проектов, каждый из которых имеет свой собственный Jenkinsfile, который просто выполняет конвейер, определенный в нашей общей библиотеке.Конвейер гарантирует, что все проекты собраны, упакованы и установлены одинаково точно.
project-a / Jenkinsfile
library 'the-shared-library'
buildProject name: 'project-a', buildApi: true, ...
the-shared-library / vars / buildProject.groovy
def call(Map config) {
pipeline {
// standard stages go here
}
}
Мы хотим расширить это, чтобы допустить выполнение дополнительного этапа во время конвейера для определенных проектов (например, 1 из многих),Я думал сделать это следующим образом, если возможно:
- передать параметр конфигурации, который является этапом, в
buildProject
- в
buildProject.call
, если пользовательский этап былпри условии, прикрепите его к концу конвейера или, возможно, между двумя (известными) этапами и запустите его
Как-то так ...
project-a / Jenkinsfile
library 'the-shared-library'
def myCustomStage = ... // not sure how
buildProject name: 'project-a', buildApi: true, ..., customStage: myCustomStage
the-shared-library / vars / buildProject.groovy
def call(Map config) {
def customStage = config.customStage
pipeline {
// standard stages 1 through 3
// if customStage provided, it goes here
// standard stages 5 through 5
}
}
Я не уверен, что является правильнымрешение здесь.