脚本式流水线
触发器
codes/jenkinsfile/script-trigger.groovy
node('local') {
echo 'hello'
}
properties([
buildDiscarder(
logRotator(
artifactDaysToKeepStr: '',
artifactNumToKeepStr: '',
daysToKeepStr: '5',
numToKeepStr: '10'
)
),
pipelineTriggers([
cron('H 3,12,17 * * *'),
scm('H 3,12,17 * * *')
])
])
原文件
参数化执行
properties([[$class: 'JobRestrictionProperty'],
parameters([run(description: '',
filter: 'ALL',
name: 'Name',
projectName: 'Project')]),
pipelineTriggers([])]
)
异常
你可以利用处理异常的方式来实现类似于申明式流水线中的 post
codes/jenkinsfile/try-catch.groovy
node {
stage("one"){
try {
echo "hello"
}catch(error){
echo error.getMessage()
}finally{
echo "finally"
}
}
}
原文件
循环
codes/jenkinsfile/loop.groovy
node('suren') {
def dev_path = '/opt/suren/bin'
def services = [
[
'name': 'admin',
'project': 'admin',
'port': '7002',
'jarName': 'admin'
]
];
stage('Copy Artifact') {
for(service in services){
step([$class: 'CopyArtifact', fingerprintArtifacts: true, flatten: true,
projectName: service.project,
selector: [$class: 'StatusBuildSelector', stable: false],
target: dev_path + '/' + service.name
])
}
}
stage('Stop Service') {
for(service in services){
sh 'fuser -n tcp -k ' + service.port + ' > redirection &'
}
}
stage('Start Service') {
for(service in services){
sh 'cd ' + pass_bin + '/' + service.name + ' && nohup nice java -server -Xms128m -Xmx384m \
-jar ' + service.jarName + '.jar \
--server.port=' + service.port + ' $> initServer.log 2>&1 &'
}
}
}
原文件
HTTP
我们有时候需要在流水线中发送 HTTP 请求,下面给出一个例子:
codes/jenkinsfile/http.groovy
// dependecy plugin is https://plugins.jenkins.io/phoenix-autotest
pipeline {
agent {
label "master"
}
stages {
stage('test') {
steps{
script {
http url: "http://baidu.com"
http url: "http://baidu.com", responseBody: "body.txt"
archiveArtifacts "body.txt"
def quy = 'https://www.baidu.com/s?wd=' + URLEncoder.encode('a b', 'UTF-8')
echo quy
http url: quy
}
}
}
}
}
原文件