如何在Jenkins管道代码中添加gerrit-trigger事件,在Jenkinsfile中

时间:2017-09-15 14:26:11

标签: jenkins-pipeline gerrit-trigger

我想在Jenkinsfile中添加gerrit触发器事件,就像我们在JobDSL中一样,

        triggers {
            upstream('pipeline_properties', 'UNSTABLE')
            gerrit {
                events {
                    refUpdated()
                }
                project('reg_exp:jenkins', ["plain:${jenkins_branch}"])
            }
        }

管道代码中是否有可能这样的东西,能够在触发器下找到一些像cron和stuffs这样的东西,但却无法获得如何在里面添加gerrit-trigger事件的引用。

2 个答案:

答案 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 似乎有效,但最终(无声地)与其他声明性事物(例如 optionstriggers)发生冲突。

轻松生成 Gerrit 触发器声明性指令的最佳方法是使用 Jenkins 生成器,该生成器可用于 https://$your-jenkins-host/directive-generator 处的任何 Jenkins 实例。

示例

  1. 导航到https://$your-jenkins-host/directive-generator
  2. 选择“触发器:触发器”作为示例指令字段。
  3. 添加触发器,例如在创建补丁集或发布“!build”评论时触发。
  4. 添加一个项目,其模式与其名称相匹配,另一个项目与一个或多个分支相匹配。
  5. 点击“生成声明性指令”按钮。

你应该得到类似的东西:

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 中使用。