我创建了一个jenkins管道来运行一个作业(例如管道a运行作业B)。在作业B中有多个参数。其中一个参数是具有多个不同选择的选择参数。我需要管道A运行作业B与所有不同的选择一次(管道A运行作业B与所有不同的选择在一个构建)。我不太熟悉使用詹金斯声明性语法,但我猜我会使用某种循环来迭代所有可用的选择?
我在Stack overflow/google上搜索了又搜索了一个答案,但没有多少运气。
您可以在作业之外的单独文件中定义这些选项,在共享库中:
// vars/choices.groovy
def my_choices = [
"Option A",
"Option B", // etc.
]
您可以在定义作业时使用这些选项:
// Job_1 Jenkinsfile
@Library('my-shared@master') _
properties([
parameters([
[$class: 'ChoiceParameterDefinition',
name: 'MY_IMPORTANT_OPTION',
choices: choices.my_choices as List,
description: '',
],
...
pipeline {
agent { any }
stages {
...
在作业2中,可以遍历值:
// Job_2 Jenkinsfile
@Library('my-shared@master') _
pipeline {
agent { any }
stages {
stage {
for (String option : choices.my_choices) {
build job: "Job_1",
wait: false,
parameters: [ string(name: 'MY_IMPORTANT_OPTION', value: option) , // etc.
]
Job_2运行时将异步触发多次运行Job_1,每次运行时使用不同的参数。