目前,我有一个有效的 Jenkins 声明式管道设置为参数化构建,并设置了一个 git 预推送钩子来构建它。
我想迁移到多分支设置,其中feature/<someCoolFeature>
和development
分支配置为部署到一台服务器,test
配置为部署到另一台服务器并production
部署到生产服务器。
我习惯于触发构建并定义何时构建哪些分支的参数,但所有文档、问题和博客文章都跳过了一个中心内容:
如何为不同的服务器配置部署变量?
在我看来,因为声明性管道中没有switch
和if
控制结构。我必须创建一个库来查找我正在构建的BRANCH_NAME
,并设置环境变量,或基于此选择相应的application-<env>.yml
,但必须有一个我缺少的最佳实践。
尽管为了声明性管道的简单性和目的性而不鼓励这样做,但您仍然可以在其中同时使用switch
和if
控制结构:
在pipeline {...}
块之前
// switch or if statements here
pipeline {
stages {
...
}
}
在阶段内,将它们包装在script {}
块中:
stage('prepare-env') {
steps {
script {
// switch or if statements here
}
}
}
请参阅 https://jenkins.io/doc/book/pipeline/syntax/#script。