我有一个管道作业,该管道作业使用以下管道常规脚本运行,
pipeline {
parameters{
string(name: 'Unique_Number', defaultValue: '', description: 'Enter Unique Number')
}
stages {
stage('Build') {
agent { node { label 'Build' } }
steps {
script {
sh build.sh
}
}
stage('Deploy') {
agent { node { label 'Deploy' } }
steps {
script {
sh deploy.sh
}
}
stage('Test') {
agent { node { label 'Test' } }
steps {
script {
sh test.sh
}
}
}
}
我只是多次使用不同的唯一ID号作为输入参数触发了该作业多次。因此,结果是我将在不同阶段对此作业进行多次运行/构建。
以此,我需要触发多个运行/构建以提升为该管道作业中的下一阶段(即,从构建到部署或从部署到测试),作为单个构建而不是触发每个运行/构建进入下一阶段。有可能吗?
答案 0 :(得分:1)
我也试图做同样的事情,但没有找到相关的答案。可能对某人有帮助。
这将读取一个包含Jenkins作业名称的文件,并从一个作业中迭代地运行它们。
请在您的Jenkins中相应地更改以下代码。
pipeline {
agent any
stages {
stage('Hello') {
steps {
script{
git branch: 'Your Branch name', credentialsId: 'Your crendiatails', url: ' Your BitBucket Repo URL '
##To read file from workspace which will contain the Jenkins Job Name ###
def filePath = readFile "${WORKSPACE}/ Your File Location"
##To read file line by line ###
def lines = filePath.readLines()
##To iterate and run Jenkins Jobs one by one ####
for (line in lines) {
build(job: "$line/branchName",
parameters:
[string(name: 'vertical', value: "${params.vertical}"),
string(name: 'environment', value: "${params.environment}"),
string(name: 'branch', value: "${params.aerdevops_branch}"),
string(name: 'project', value: "${params.host_project}")
]
)
}
}
}
}
}
}
答案 1 :(得分:0)
如果运行以下命令,则可以从一个管道启动多个作业:
build job:"One", wait: false
build job:"Two", wait: false
您的主要工作是启动子管道,子管道将并行运行。
您可以阅读PipeLine Build Step documentation for more information。
此外,您还可以阅读有关parallel run in declarative pipeline
的信息Here,您可以找到许多并行运行的示例