如何在詹金斯的单个管道作业中触发多次运行?

时间:2019-02-25 11:11:23

标签: jenkins-pipeline

我有一个管道作业,该管道作业使用以下管道常规脚本运行,

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号作为输入参数触发了该作业多次。因此,结果是我将在不同阶段对此作业进行多次运行/构建。

以此,我需要触发多个运行/构建以提升为该管道作业中的下一阶段(即,从构建到部署或从部署到测试),作为单个构建而不是触发每个运行/构建进入下一阶段。有可能吗?

2 个答案:

答案 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,您可以找到许多并行运行的示例