0
点赞
收藏
分享

微信扫一扫

jenkins2 Jenkinsfile和load

更复杂的pipeline实例,使用了Jenkinsfile和load。

 

文章来自:​​http://www.ciandcd.com​​

文中的代码来自可以从github下载: ​​https://github.com/ciandcd​​

 

实例代码来自:https://github.com/jenkinsci/workflow-aggregator-plugin/tree/master/demo/repo

 

1. groovy脚本

​​https://github.com/jenkinsci/workflow-aggregator-plugin/blob/master/demo/repo/servers.groovy​​

def deploy(id) {
unstash 'war'
sh "cp x.war /tmp/webapps/${id}.war"
}def undeploy(id) {
sh "rm /tmp/webapps/${id}.war"
}def runWithServer(body) {
def id = UUID.randomUUID().toString()
deploy id
try {
body.call id
} finally {
undeploy id
}
}

this

 

2. Jenkinsfile

​​https://github.com/jenkinsci/workflow-aggregator-plugin/blob/master/demo/repo/Jenkinsfile​​

jettyUrl = 'http://localhost:8081/'
def servers
stage 'Dev'
node {
checkout scm
servers = load 'servers.groovy'
mvn '-o clean package'
dir('target') {stash name: 'war', includes: 'x.war'}
}stage 'QA'
parallel(longerTests: {
runTests(servers, 30)
}, quickerTests: {
runTests(servers, 20)
})stage name: 'Staging', concurrency: 1
node {
servers.deploy 'staging'
}input message: "Does ${jettyUrl}staging/ look good?"
try {
checkpoint('Before production')
} catch (NoSuchMethodError _) {
echo 'Checkpoint feature available in CloudBees Jenkins Enterprise.'
}stage name: 'Production', concurrency: 1
node {
sh "wget -O - -S ${jettyUrl}staging/"
echo 'Production server looks to be alive'
servers.deploy 'production'
echo "Deployed to ${jettyUrl}production/"
}def mvn(args) {
sh "${tool 'Maven 3.x'}/bin/mvn ${args}"
}def runTests(servers, duration) {
node {
checkout scm
servers.runWithServer {id ->
mvn "-o -f sometests test -Durl=${jettyUrl}${id}/ -Dduration=${duration}"
}
}
}

 

3. 如果有兴趣可以下载pipeline demo docker image

​​https://github.com/jenkinsci/workflow-aggregator-plugin/tree/master/demo​​

 


作者:​​iTech​​

微信公众号: cicdops

github:​​https://github.com/cicdops/cicdops​​

jenkins2 Jenkinsfile和load_实例代码




举报

相关推荐

0 条评论