我想在詹金斯的所有版本中使用Jenkins文件,并且我有以下问题。 我们基本上是3种构建:Jenkinsfile和分支机构的不同策略
- 拉请求建立 - 这将是合并后的代码审查掌握的,如果建筑工作
- 手动拉请求构建 - 构建,做同样的以上,但可以由用户手动触发(例如,如果我们有一些不稳定的测试)
- 最初的连续交付管道 - 这将构建代码,部署到存储库,从目标服务器上的存储库安装工件,并启动在那里应用
我应该如何将所有上述内容包含到单个Jenkins文件中。 现在我唯一的想法是做一个巨人,如果这将检查它是哪个分支并且将执行这些步骤。
所以我有两个问题:
1.那是适当的方式做到这一点的Jenkinsfile?
- 如何在多分支作业类型中获取当前正在执行的分支的名称?
供参考,这是我目前的Jenkinsfile
:
def servers = ['server1', 'server2']
def version = "1.0.0-${env.BUILD_ID}"
stage 'Build, UT, IT'
node {
checkout scm
env.PATH = "${tool 'Maven'}/bin:${env.PATH}"
withEnv(["PATH+MAVEN=${tool 'Maven'}/bin"]) {
sh "mvn -e org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$version -DgenerateBackupPoms=false"
sh 'mvn -e clean deploy'
sh 'mvn -e scm:tag'
}
}
def nodes = [:]
for (int i = 0; i < servers.size(); i++) {
def server = servers.get(i)
nodes["$server"] = {
stage "Deploy to INT ($server)"
node {
sshagent(['SOME-ID']) {
sh """
ssh ${server}.example.com <<END
hostname
/apps/stop.sh
yum -y update-to my-app.noarch
/apps/start.sh
END""".stripIndent()
}
}
}
}
parallel nodes
编辑:基于去除意见问题
的可能的复制[詹金斯多枝管道:什么是分支名变量(http://stackoverflow.com/questions/32789619/jenkins-multibranch-pipeline-what-是分支名称变量) –