如何在构建触发器中配置服务器 → 作业 DSL 创建的作业中的 Gerrit 事件

时间:2021-06-24 10:10:35

标签: jenkins jenkins-pipeline jenkins-groovy jenkins-job-dsl gerrit-trigger

我正在创建一个 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 时,我看到了这一点。

enter image description here

但是,我希望默认选择 Gerrit 服务器 aj-Gerrit 而不是 Any Server

enter image description here

我试图通过在我的 Groovy 代码中添加配置块来实现这一点,

configure { project ->
  project / triggers << 'com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject' {
     serverName('aj-Gerrit')
  }
}

但它似乎不起作用。

有没有办法默认选择服务器?

1 个答案:

答案 0 :(得分:0)

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 的更多元素。