一、这是一个demo
不单单用作并发构建docker镜像,因为使用sh''' 也是shell,也可作用其他类似用途
二、声明式pipeline
def build_docker(service) {
stages = {
stage("构建${service}服务Docker镜像") {
withEnv(["service=${service}"]){
sh '''
sleep 5
echo "docker ${service} build start"
echo "docker ${service} build done"
'''
}
}
}
return stages
}
pipeline {
agent any
parameters {
string defaultValue: 'Service-a Service_b Servicec', description: '需要打包的服务', name: 'build_com', trim: true
}
options {
timestamps()
timeout(30)
}
stages {
stage('start') {
steps {
sh '''
echo start
echo start
echo start
'''
}
}
stage('并发进行构建Docker镜像') {
steps {
script {
def stages = [:]
for (service in build_com.tokenize(' ')){
stages[service] = build_docker(service)
}
parallel stages
}
}
}
stage('done') {
steps {
sh '''
echo "done"
echo "done"
echo "done"
'''
}
}
}
}
三、结果图
四、脚本式pipeline
def build_docker(service) {
stages = {
stage("构建${service}服务Docker镜像") {
withEnv(["service=${service}"]){
sh '''
sleep 5
echo "docker ${service} build start"
echo "docker ${service} build done"
'''
}
}
}
return stages
}
node('master') {
stage('start') {
sh '''
echo start
echo start
echo start
'''
}
def stages = [:]
for (service in build_com.tokenize(' ')){
stages[service] = build_docker(service)
}
parallel stages
stage('done') {
sh '''
echo "done"
echo "done"
echo "done"
'''
}
}