在jenkins构建计划中添加构建参数

时间:2016-01-04 15:40:44

标签: jenkins jenkins-plugins

我有一份詹金斯工作。我想在一个特定的时间用构建参数构建我的工作。

我想通过使用Build periodically选项来完成此操作。

我输入的内容如下:

*/1 * * * * Parameter1

如果我这样做,jenkins会显示错误。

这可能不使用任何插件

如果没有,那么哪个插件会更好

或者,有没有办法在时间表中提供参数?

我的实际要求是这样的:

 build in morning using one parameter
 build in evening using another parameter.    

5 个答案:

答案 0 :(得分:12)

基本上,使用Build periodic选项,您无法使用参数计划Jenkins作业。

但是,要在需要使用不同环境的不同时间安排作业,您必须使用上面提到的参数化调度程序插件https://github.com/jwmach1/parameterized-scheduler或在其中搜索 (管理Jenkins - >管理插件 - >参数化计划程序)。所以它会像 #Parameter1 H/15 * * * * %Parameter1 #Parameter2 H/30 * * * * %Parameter2 请记住,您必须已设置参数,因为插件仅对具有参数的作业可见。

节点和标签参数插件可以提供帮助,因为它允许您选择单个节点,假设您已配置了不同的服务器qa1和qa2。希望能为您澄清一些事情。

答案 1 :(得分:7)

使用原生的Jenkins crontab,它是不可能的。

但是这个插件应该是可能的: https://github.com/jwmach1/parameterized-scheduler

你必须分叉repo并构建这个插件+进行手动安装。

本教程介绍了如何构建自定义插件: https://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial

(设置环境+构建插件)

答案 2 :(得分:1)

没有插件,您可以尝试克隆作业,并使用不同的参数值创建构建计划。即您可能有 Record Count: <asp:Label ID="lblRecordCount" runat="server" Text="Nothing Happened"></asp:Label> <br /> <asp:ListView ID="ListView1" runat="server" DataKeyNames="id" DataSourceID="SqlDataSourceGift" OnItemCreated ="ListView1_ItemCreated" OnDataBound="ListView1_DataBound" > job_morning

请参见How do I clone a job in jenkins?

答案 3 :(得分:1)

也许不是您想要的,但这是我发现的一个有趣的hack,因此我决定分享。您可以根据环境以编程方式设置Jenkins job的参数。

# check if job was trigered by timer
if [ $(env | grep -E '^BUILD_CAUSE=TIMERTRIGGER$') ] ; then 
  # your logic here, utilise the power of bash   
  if [ $(date +"%H") -eq 16 ] ; then PARAM=VALUE_1 ; fi
  if [ $(date +"%H") -eq 17 ] ; then PARAM=VALUE_2 ; fi
fi

答案 4 :(得分:0)

如果有默认值,则可以计划参数化的作业。

在这里,我将使用Jenkinsfile给出一个示例。假设您在管道脚本中定义了一个参数testUserName

pipeline {
    parameters {
        string(name: 'testUserName', defaultValue: 'defaultTestUser', 
                description: 'Username to use for test scenarios')
    }

    stages {
        stage('Run tests') {
            steps {
                sh "mvn verify --batch-mode -Dtest.user=${params.testUserName}"
            }
        }
    }
}

当您按下“立即生成”按钮时,该作业将首次运行而不会要求参数(将使用defaultValue)。在第一次运行中下载并处理Jenkinsfile之后,按钮名称将更改为“ Build with Parameters”。您单击按钮并键入另一个用户(不是Jenkinsfile中定义的默认用户)。问题在于,您键入的值在两次作业之间不会保留。它将始终重置为defaultValue

为防止作业运行之间重置值,请替换

defaultValue: 'defaultTestUser'

defaultValue: params.testUserName ?: 'defaultTestUser'

现在,作业将始终使用先前在“使用参数构建”中指定的值运行。在dev.to

上找到了此解决方案