5

有谁知道从 Jenkinsfile 中设置作业属性(特别是构建触发器)的正确方法?(声明性管道脚本,在多分支管道作业中)。

为清楚起见,我需要为多分支项目中的基础作业设置特定的构建触发器。我可以在 GUI 中配置的总体多分支项目的触发器。

已尝试此处列出的方法: Jenkins 多分支管道和指定上游项目

Jenkins:触发上游变更的多分支管道

如何使用 Jenkins Pipeline 属性步骤?

我收到错误说,从 v0.8 开始,我应该使用选项步骤: https ://jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline

但是我看不到那里列出的任何允许在选项指令中设置构建触发器的步骤。

服务器上的每个分支作业文件夹中都有一个 config.xml,但我认为当我再次运行该作业时这将被覆盖,因为它们位于多分支作业下。

还有一个选项可以将不同的属性传递到不同的分支(为分支设置例外),但我看到的唯一选项是抑制 SCM 提交。


我的总体目标是尝试制作一个 Jenkinsfile,动态地允许多分支项目中的所有底层作业由其依赖的上游构建触发。

第 1 步:弄清楚如何设置属性 :)

第 2 步:使用上游依赖属性动态填充每个构建,这意味着它们会在某些构建完成时启动。

问题仅涉及第 1 步,第 2 步正是我要到达的地方。

4

1 回答 1

5

第 1 步:您可以定义许多属性。下面列出了您正在寻找的那些:

options{timestamps()}  --> Adds timestamp to console output
triggers{pollSCM('H/15 * * * *')} --> Polling SCM 
triggers{cron('H/15 * * * *')} --> Trigger build every 15 minutes. Similarly you can set the build trigger to any specific time to build it periodically.

此外,您可以找到所有可以使用“管道语法”中的属性选项定义的属性,这些属性在每个作业中都可用。请导航到 PIpeline 语法(在任何作业中)-> 选择属性:设置作业属性。

示例声明性管道可能如下所示:

#!groovy
pipeline{
agent any
options{timestamps()}
triggers{pollSCM('H/15 * * * *')}
parameters{
 ..........
}
environment{
............
}
stages{
stage{
steps{
..............
}
}
}
post{
always{
build job: '/foldername/job1', parameters: [string(name: 'parameter1', value: "${params.parameter1}")] , propagate: false
}
}
}

第 2 步:您可以使用“构建”命令从 Jenkins 文件中触发另一个项目。请参阅上面的帖子部分以使用参数触发相同的操作。

如果您需要更多信息,请告诉我。

于 2017-03-22T19:38:29.413 回答