File Jenkins限制此项目可以从属性文件运行的位置
我想使用从上游作业传入的参数限制下游Jenkins作业在特定机器上运行。上游作业创建一个属性文件,其中一个属性指示它应该在哪台机器上运行(test.properties中的machine_TO_run=linux123) 这个包含所有属性的文件通过生成后操作:在其他项目上触发参数化生成传递到我的下游作业中。这里我从属性文件中指定参数:$WORKSPACE/test.properties 我已经验证了下游作业确实接收并处理了文件。MACHINE_TO_RUN=linux123列在我的环境变量中 如何使用此env变量来限制作业可以运行的位置。我尝试将“限制此项目可以运行的位置”设置为${MACHINE\u to\u run},但没有成功 有人有这样做的经验吗File Jenkins限制此项目可以从属性文件运行的位置,file,jenkins,build,properties,restrict,File,Jenkins,Build,Properties,Restrict,我想使用从上游作业传入的参数限制下游Jenkins作业在特定机器上运行。上游作业创建一个属性文件,其中一个属性指示它应该在哪台机器上运行(test.properties中的machine_TO_run=linux123) 这个包含所有属性的文件通过生成后操作:在其他项目上触发参数化生成传递到我的下游作业中。这里我从属性文件中指定参数:$WORKSPACE/test.properties 我已经验证了下游作业确实接收并处理了文件。MACHINE_TO_RUN=linux123列在我的环境变量中 如
更新:下面是我如何实现的 下载 构建参数与此插件绑定。因此,如果将云id或节点传递到作业中,例如MACHINE\u TO\u RUN 该插件将允许您编写groovy脚本,让您返回希望作业运行的位置
使机器返回运行状态 我尝试使用环境变量在“限制此项目可以运行的位置”中参数化标签表达式,但没有成功 我向您推荐:
- 在上游作业的常规构建步骤之后,创建另一个构建步骤以“处理作业DSL”
- 使用groovy脚本创建下游作业,通过这样做,您可以在该groovy脚本中设置“限制此项目可以运行的位置”
// You have to have MACHINE_TO_RUN as your environment variable in your upstream job
def machine_to_run=${MACHINE_TO_RUN}
job(your_downstream_job_name) {
label(machine_to_run)
parameters {
//The parameter setting of your downstream job
}
steps {
//The build step of your downstream job
}
//Other settings of your downstream job
}
只是在早上用我的电脑实现了一些非常相似的东西。因此,您可以使用“Label”类型的额外参数“参数化”下游作业(仅在安装上述插件后可用),并从您拥有的任何源(在您的示例中为test.properties文件)为该参数提供一个值 此外,您不必再为下游作业处理“限制此项目可以运行的位置”设置 例如,假设您在Jenkins中有两个作业“构建”和“测试”,定义如下(使用类似Groovy的伪代码):
这正是获得所需行为所需要的。我也遇到了同样的问题,并设法解决了它 所以,在我的例子中,我使用了一个multjob项目来调用一个自由风格的项目。多任务项目非常好,因为它们可以并行运行子项目。确保只从multijob传递node name参数,并且它会自动注意子项目在给定节点中执行。标签也是有效的节点名称参数
在本例中,我不必处理
groovy
欢迎链接到某个解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及为什么存在,然后引用您链接到的页面的最相关部分,以防目标页面不可用。请不要只是发布一些工具或库作为答案。至少在答案中说明一下。好了,伙计们,我现在添加了更多的解释。请删除您的否决票
[TEST]
parameters: { targetNode: typeof(Label), defaultValue: '' }
[BUILD]
parameters: {}
set-env-variables: { from: './test.properties' } // or your way to set env vars
trace-env-variable: { variable: $MACHINE_TO_RUN } // linux123
post-build: {
trigger: {
job: "TEST", parameters: { targetNode: $MACHINE_TO_RUN }
}
}