问题描述
我正在创建一个 Jenkins 作业,该作业由对 Gerrit 的提交触发。
pipelineJob(jobName) {
displayName(displayString)
triggers {
gerrit {
events {
patchsetCreated()
}
project('plain:Verify',['ant:**'])
configure { project ->
project / triggers << 'com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject' {
serverName('aj-Gerrit')
}
}
}
}
}
这很好用,当我查看 UI 时,我看到了这一点。
但是,我希望默认选择 Gerrit 服务器 aj-Gerrit 而不是 Any Server
我试图通过在我的 Groovy 代码中添加配置块来实现这一点,
configure { project ->
project / triggers << 'com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject' {
serverName('aj-Gerrit')
}
}
但它似乎不起作用。
有没有办法默认选择服务器?
解决方法
configure
闭包中不存在 gerrit
函数。通常,页面上可以看到所有可用的 Job DSL 选项:
<your-jenkins-url>/plugin/job-dsl/api-viewer/index.html
但是,Gerrit 插件会破坏页面(原因:JENKINS-53250)。
这是手动将服务器添加到作业时生成的 XML:
<triggers>
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger plugin="gerrit-trigger@2.34.0">
<spec></spec>
<gerritProjects>
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
<compareType>PLAIN</compareType>
<pattern></pattern>
<branches>
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
<compareType>PLAIN</compareType>
<pattern></pattern>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
</branches>
<disableStrictForbiddenFileVerification>false</disableStrictForbiddenFileVerification>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
</gerritProjects>
<dynamicGerritProjects class="empty-list"/>
<skipVote>
<onSuccessful>false</onSuccessful>
<onFailed>false</onFailed>
<onUnstable>false</onUnstable>
<onNotBuilt>false</onNotBuilt>
<onAborted>false</onAborted>
</skipVote>
<silentMode>false</silentMode>
<enableTopicAssociation>false</enableTopicAssociation>
<notificationLevel></notificationLevel>
<silentStartMode>false</silentStartMode>
<escapeQuotes>true</escapeQuotes>
<nameAndEmailParameterMode>PLAIN</nameAndEmailParameterMode>
<dependencyJobsNames></dependencyJobsNames>
<commitMessageParameterMode>BASE64</commitMessageParameterMode>
<changeSubjectParameterMode>PLAIN</changeSubjectParameterMode>
<commentTextParameterMode>BASE64</commentTextParameterMode>
<buildStartMessage></buildStartMessage>
<buildFailureMessage></buildFailureMessage>
<buildSuccessfulMessage></buildSuccessfulMessage>
<buildUnstableMessage></buildUnstableMessage>
<buildNotBuiltMessage></buildNotBuiltMessage>
<buildAbortedMessage></buildAbortedMessage>
<buildUnsuccessfulFilepath></buildUnsuccessfulFilepath>
<customUrl></customUrl>
<serverName>__ANY__</serverName>
<triggerOnEvents class="linked-list">
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginPatchsetCreatedEvent>
<excludeDrafts>false</excludeDrafts>
<excludeTrivialRebase>false</excludeTrivialRebase>
<excludeNoCodeChange>false</excludeNoCodeChange>
<excludePrivateState>false</excludePrivateState>
<excludeWipState>false</excludeWipState>
<commitMessageContainsRegEx></commitMessageContainsRegEx>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginPatchsetCreatedEvent>
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginDraftPublishedEvent/>
</triggerOnEvents>
<dynamicTriggerConfiguration>false</dynamicTriggerConfiguration>
<triggerConfigURL></triggerConfigURL>
<triggerInformationAction/>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
</triggers>
您可以尝试使用(与您使用的类不同):
configure { project ->
project / triggers << 'com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger' {
serverName('aj-Gerrit')
}
}
如果它不起作用,则还必须提供来自生成的 XML 的更多元素。