首页 > 解决方案 > 多个参数的 Jenkins 参数化项目

问题描述

我有 Jenkins Pipeline,它触发了不同的项目。然而,所有管道的唯一区别只是名称。所以我在 jenkins 的参数中添加了一个参数 ${project} 并为其分配了项目名称的值。

我们有很多项目,我正在努力寻找更好的方法来实现这一目标。

我在想我们如何才能使所有项目的参数使用不同的参数运行,而无需在 jenkins 下实际创建不同的项目。

我正在粘贴一些屏幕截图,让您了解我到底想要实现什么。

在此处输入图像描述

正如这里提到的,这是一个无线电服务器项目,有一个管道,其中包含 ${project}。

如何从单个詹金斯工作中为该 {project} 赋予多个值?如果您有任何疑问,请给我留言或添加评论。

在此处输入图像描述

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

在此处输入图像描述

如您所见,这 2 个图像的默认值为 radioserver,nrcuup。我怎样才能将它们结合起来,让它们无缝运行?

标签: jenkinsjenkins-pipelinejenkins-pluginsjenkins-job-dsl

解决方案


我希望这将有所帮助。让我知道答案是否需要任何更改。

您可以在 Jenkins 中使用条件。根据 ${PROJECT} 的值,您可以执行特定阶段。

这是一个简单的管道示例,其中我提供了选择参数值的选项,PROJECT即 test1、test2 和 test3。

因此,无论何时选择 test1,jenkins 作业都会执行基于test1

示例管道代码

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 值

输出:

在此处输入图像描述


推荐阅读