Krz*_*soń 33 jenkins jenkins-pipeline
我正在尝试将Jenkins文件用于Jenkins中的所有构建,并且我有以下问题.我们基本上有3种构建:
我应该如何将所有上述构建包含在一个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
Run Code Online (Sandbox Code Playgroud)
编辑:删除基于意见的问题
小智 25
如果要根据分支跳过多个阶段,可以为多个阶段添加If语句,如下所示:
if(env.BRANCH_NAME == 'master'){
stage("Upload"){
// Artifact repository upload steps here
}
stage("Deploy"){
// Deploy steps here
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以将其添加到个别阶段,如:
stage("Deploy"){
if(env.BRANCH_NAME == 'master'){
// Deploy steps here
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
1)我不知道它是否合适,但如果它解决了你的问题,我认为是合适的.
2)为了知道分支的名称,您可以使用BRANCH_NAME变量,其名称取自分支名称.
${env.BRANCH_NAME}
Run Code Online (Sandbox Code Playgroud)
答案如下: Jenkins Multibranch管道:什么是分支名称变量?
使用这篇文章,这对我有用:
stage('...') {
when {
expression { env.BRANCH_NAME == 'master' }
}
steps {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37156 次 |
| 最近记录: |