我有一个巨大的 Jenkinsfile,我需要对其进行模块化以提高可维护性,所以我想做的是将构建、测试和部署单独到单独的文件中,但每个文件都有多个阶段,我不想失去显示每个阶段的功能在 Jenkins 上并轻松检查他们的错误。
示例:
stages {
stage('Clone') {}
stage('Pre Build Clean') {}
stage('Copy Requirements') {}
stage('Build') {}
}
我想将所有这些移至
build.groovy
并通过调用它
stage('Build') {
steps {
script {
build.buildApp()
}
}
}
同时保持对Jenkins的舞台看法。这可能吗或者有更好的方法吗?
您可以通过将阶段代码托管在外部文件中来实现此目的。
// build.groovy
def buildStages() {
return [
stage('Build 1') {
// Do not use steps directive here
println 'Build 1'
},
stage('Build 2') {
println 'Build 2'
},
]
}
return this
您可以调用Jenkinsfile中添加的功能
pipeline {
agent any
stages {
stage('Import lib'){
steps {
script {
buildLib = load 'jenkinsfiles/build.groovy'
}
}
}
stage('Build') {
steps {
script {
buildLib.buildStages()
}
}
}
}
}