我想在Jenkinsfile中添加gerrit触发器事件,就像我们在JobDSL中一样,
triggers {
upstream('pipeline_properties', 'UNSTABLE')
gerrit {
events {
refUpdated()
}
project('reg_exp:jenkins', ["plain:${jenkins_branch}"])
}
}
管道代码中是否有可能这样的东西,能够在触发器下找到一些像cron和stuffs这样的东西,但却无法获得如何在里面添加gerrit-trigger事件的引用。
答案 0 :(得分:2)
这是一个工作Jenkinsfile
涵盖gerrit触发器事件部分,请参阅代码段下面的参考
BuildDiscarderProperty
& SCMTrigger
也用于样本。
#!/usr/bin/env groovy properties( [ [ $class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', numToKeepStr: '10'] ], pipelineTriggers([ [ $class: 'SCMTrigger', scmpoll_spec: "H H 1,15 1-11 *" ], [ $class: 'GerritTrigger', gerritProjects: [ [ $class: "GerritProject", compareType: "REG_EXP", pattern: "jenkins", branches: [ [ $class: "Branch", pattern: "\${jenkins_branch}" ] ] ] ], triggerOnEvents: [ [$class: "PluginRefUpdatedEvent"] ] ] ]) ] ) node { echo 'Hello World' }
有用的参考资料
config.xml
作业目录下的 JENKINS_HOME
用于调试
答案 1 :(得分:0)
如果您使用的是声明性管道(与脚本化管道相比,其他答案中使用的属性方法应该适用),您希望使用“触发器”指令。令人困惑的是,使用 properties
似乎有效,但最终(无声地)与其他声明性事物(例如 options
和 triggers
)发生冲突。
轻松生成 Gerrit 触发器声明性指令的最佳方法是使用 Jenkins 生成器,该生成器可用于 https://$your-jenkins-host/directive-generator
处的任何 Jenkins 实例。
https://$your-jenkins-host/directive-generator
你应该得到类似的东西:
triggers {
gerrit customUrl: '', gerritProjects: [[branches: [[compareType: 'PLAIN', pattern: 'master']], compareType: 'PLAIN', disableStrictForbiddenFileVerification: false, pattern: 'ring-project']], triggerOnEvents: [commentAddedContains('!build'), patchsetCreated(excludeDrafts: true, excludeNoCodeChange: true, excludeTrivialRebase: true)]
}
准备在您的声明式管道 Jenkinsfile 中使用。