首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了Jenkins作业DSL中的指定分支之外,添加抑制自动scm触发?

除了Jenkins作业DSL中的指定分支之外,添加抑制自动scm触发?
EN

Stack Overflow用户
提问于 2017-11-14 17:21:28
回答 2查看 4K关注 0票数 5

除了在作业DSL中指定分支开发之外,如何添加默认抑制自动scm触发?

我试过docs https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob。这说明不了多少。它似乎不被支持。

因此,我想我唯一的方法是通过配置块直接向XML添加自定义属性。

我想要的:

代码语言:javascript
复制
    <strategy class="jenkins.branch.NamedExceptionsBranchPropertyStrategy">
      <defaultProperties class="java.util.Arrays$ArrayList">
        <a class="jenkins.branch.BranchProperty-array">
          <jenkins.branch.NoTriggerBranchProperty/>
        </a>
      </defaultProperties>
      <namedExceptions class="java.util.Arrays$ArrayList">
        <a class="jenkins.branch.NamedExceptionsBranchPropertyStrategy$Named-array">
          <jenkins.branch.NamedExceptionsBranchPropertyStrategy_-Named>
            <props class="empty-list"/>
            <name>development</name>
          </jenkins.branch.NamedExceptionsBranchPropertyStrategy_-Named>
        </a>
      </namedExceptions>
    </strategy>

我试过的是:

代码语言:javascript
复制
multibranchPipelineJob(jobName) {    
    branchSources {
        git {
            remote(gitRepo)
            credentialsId(credentials)
            includes('*')
            configure {
             it / "sources  class='jenkins.branch.MultiBranchProject$BranchSourceList'" / 'data' / 'jenkins.branch.BranchSource' / "strategy class='jenkins.branch.DefaultBranchPropertyStrategy'" << name('development')               
            }        
        }           
    }
}

这是有用的,但不断崩溃的http://job-dsl.herokuapp.com/ --这不是很有用的https://github.com/jenkinsci/job-dsl-plugin/blob/master/docs/The-Configure-Block.md

我不知道我在做什么,而文档、手册和教程根本没有帮助。

编辑:

现在我有了这个。起作用了,有点.

我能够生成作业,但是Jenkins在我试图重新保存作业时会抛出一个错误。输出XML在某种程度上不同。

代码语言:javascript
复制
multibranchPipelineJob(jobName) {

        configure { 
            it / sources(class: 'jenkins.branch.MultiBranchProject$BranchSourceList') / 'data' / 'jenkins.branch.BranchSource' << {
                source(class: 'jenkins.plugins.git.GitSCMSource') {
                  id(randomId)
                  remote(gitRepo)
                  credentialsId(credentials) 
                }
                strategy(class: "jenkins.branch.NamedExceptionsBranchPropertyStrategy") {
                    defaultProperties(class: "java.util.Arrays\$ArrayList")  {
                        a(class: "jenkins.branch.BranchProperty-array") {
                            'jenkins.branch.NoTriggerBranchProperty'()
                        }
                    }
                    namedExceptions(class: "java.util.Arrays\$ArrayList") {
                     a(class: "jenkins.branch.NamedExceptionsBranchPropertyStrategy\$Named-array") {
                       'jenkins.branch.NamedExceptionsBranchPropertyStrategy_-Named'() {
                           props(class: "empty-list")
                           name('development') 
                       }
                   }        
                }

                }  

            } 
            } 

}

正如你可能已经注意到的,它是非常丑陋的。希望将来有人能修复这个插件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-22 09:42:39

因此,正在工作的代码如下:

代码语言:javascript
复制
    UUID uuid = UUID.randomUUID()
println('Random UUID: ' + uuid)

multibranchPipelineJob('test') {

  configure {
    it / sources / 'data' / 'jenkins.branch.BranchSource' << {
      source(class: 'jenkins.plugins.git.GitSCMSource') {
        id(uuid)
        remote('...')
        credentialsId('...')
        includes('*')
        excludes('')
        ignoreOnPushNotifications('false')
        traits {
            'jenkins.plugins.git.traits.BranchDiscoveryTrait'()
        }
      }
      strategy(class: 'jenkins.branch.NamedExceptionsBranchPropertyStrategy') {
        defaultProperties(class: 'empty-list')
        namedExceptions(class: 'java.util.Arrays\$ArrayList') {
          a(class: 'jenkins.branch.NamedExceptionsBranchPropertyStrategy\$Named-array') {
            'jenkins.branch.NamedExceptionsBranchPropertyStrategy_-Named'() {
              props(class: 'java.util.Arrays\$ArrayList') {
                a(class: 'jenkins.branch.BranchProperty-array') {
                  'jenkins.branch.NoTriggerBranchProperty'()
                }
              }
              name('master')
            }
          }
        }
      }
    }
  }
}
票数 5
EN

Stack Overflow用户

发布于 2017-11-16 10:02:12

您可以通过两种方式实现这一目标。

  • 在UI中配置为解释的这里,您说您不想这样做。
  • 在DSL中使用条件语句作为解释这里
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47291748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档