我有一份詹金斯工作。我想在一个特定的时间用构建参数构建我的工作。
我想通过使用Build periodically
选项来完成此操作。
我输入的内容如下:
*/1 * * * * Parameter1
如果我这样做,jenkins会显示错误。
这可能不使用任何插件。
如果没有,那么哪个插件会更好
或者,有没有办法在时间表中提供参数?
我的实际要求是这样的:
build in morning using one parameter
build in evening using another parameter.
答案 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
。
答案 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
上找到了此解决方案