使用DSL在Jenkins Pipelinejob中配置块?

时间:2018-11-12 14:41:06

标签: jenkins jenkins-pipeline jenkins-job-dsl

尝试使用Jobs-dsl编写DSL Jenkins管道作业,并且不确定我是否遇到了一些管道作业限制或缺少更基本的内容。

1-使用configure块在“其他行为”下配置“轮询忽略某些路径中的提交”似乎在管道作业中未按预期工作;我已经测试过,并且此配置块在自由式作业dsl中按预期工作。已搜索且找不到任何相关内容-有人可以确认以下管道作业中是否支持以下内容?

    pipelineJob("ProjA/pipeline") 
    {
        logRotator
        {
          daysToKeep 10
          numToKeep 30
        }
        definition 
        {
          cpsScm 
          {
            scm
            {
                git('git@github.com:sample-org/pipeline.git', '*/develop')
            }
            configure { gitScm -> 
                gitScm / 'extensions' << 'hudson.plugins.git.extensions.impl.PathRestriction' {
                    excludedRegions('sample/dirs')
                }
              }
           }
        }
     }

2-如何将凭据传递到管道下scm块下的git?适用于自由式工作,但无法在这里工作

谢谢。

2 个答案:

答案 0 :(得分:1)

常规管道的仅供参考

使用引用git plugin step的凭据进行Git结帐:

    stage('checkout') {
        git credentialsId: '<credentialsID from credentials plugin>',
        url: 'git@repository.foo/repoName.git',
        branch: 'master' 
    }

Reg。 scm plugin step

 stage('checkout') {
     checkout scm: [$class: 'GitSCM',
        userRemoteConfigs: [[url: 'https://repository.foo/git/fooRepoName.git' ,
            credentialsId: 'credentialsIDToUseFromCredentialsPlugin']],
            branches: [[name:'refs/tags/TAGNAME']]],
        poll:false      
 }

stage('checkout') {
     checkout scm: [$class: 'GitSCM',
        userRemoteConfigs: [[url: 'https://repository.foo/git/fooRepoName.git' ,
            credentialsId: 'credentialsIDToUseFromCredentialsPlugin']],
            branches: [[name:'BRANCHNAME']]],
        poll:false      
 }

而且我从不寻找民意测验是否有效

答案 1 :(得分:1)

内置DSL仅支持基本选项。但是Dynamic DSL支持几乎所有选项。

pipelineJob('example') {
  definition {
    cpsScmFlowDefinition {
      scm {
        gitSCM {
          userRemoteConfigs {
            userRemoteConfig {
              url('git@github.com:sample-org/pipeline.git')
              name('master')
              refspec(null)
              credentialsId('example')
            }
          }
          branches {
            branchSpec {
              name('*/develop')
            }
          }
          extensions {
            pathRestriction {
              includedRegions(null)
              excludedRegions('sample/dirs')
            } 
          }
          doGenerateSubmoduleConfigurations(false)
          browser {}
          gitTool(null)
        }
      }
      scriptPath('Jenkinsfile')
    }
  }
}