Jenkins多参数化项目

q35jwt9p  于 2023-10-17  发布在  Jenkins
关注(0)|答案(1)|浏览(136)

我有Jenkins Pipeline,它可以触发不同的项目。然而,所有管道的唯一区别只是名称。因此,我在jenkins的parameter中添加了一个参数${project},并为其分配了项目名称的值。
我们有很多项目,我正在努力找到一个更好的方法来实现这一目标。
我在想,我们怎样才能让所有的项目都用不同的参数运行,而不用在jenkins下创建不同的项目。
我贴一些截图,让你明白我到底想达到什么目的。

正如这里提到的,这是一个radioserver项目,有一个管道,其中有${project}。
如何从单个jenkins作业中为{project}赋予给予多个值?如果您有任何疑问,请给我留言或添加评论。


你可以看到我创建的这两个项目,它的所有内容都是一样的,只是参数化的值不同,我在想我如何能给那个参数给予不同的值。

正如你所看到的,这两个镜像的默认值是radioserver,nrcuup。我怎样才能把它们合并组合起来,使它们无故障地运行呢?

3bygqnnd

3bygqnnd1#

我希望这会有所帮助。让我知道,如果在回答需要任何变化.
您可以在Jenkins中使用条件。根据${PROJECT}的值,您可以执行特定的阶段。
下面是一个简单的管道示例,我已经给出了选择参数PROJECT的值的选项,即:test1、test 2和test 3。
因此,无论何时选择test1,jenkins job都会执行基于test1的stage

管道代码示例

pipeline {
    agent any
    parameters {
        choice(
            choices: ['test1' , 'test2', 'test3'],
            description: 'PROJECT NAME',
            name: 'PROJECT')
    }

    stages {
        stage ('PROJECT 1 RUN') {
            when {
                expression { params.PROJECT == 'test1' }
            }
            steps {
                echo "Hello, test1"
            }
        }
        
        stage ('PROJECT 2 RUN') {
            when {
                expression { params.PROJECT == 'test2' }
            }
            steps {
                echo "Hello, test2"
            }
        }
    }
}

输出:

1.当选择test1

1.当选择test2

更新答案

是的,可以使用Jenkins插件Parameterized Scheduler使用特定的参数值定期触发作业
在你保存项目和一些参数(如上面提到的管道代码)后,再次回到Configure,在Build Trigger下,你可以看到Build periodically with parameters的选项

示例:

我将在这里每隔偶数分钟运行PROJECT=test1的作业,每隔奇数分钟运行PROJECT=test2的作业。下面是配置

*/2 * * * * %PROJECT=test1
1-59/2 * * * * %PROJECT=test2

请根据需要更改crontab值

输出:

相关问题