job-dsl - 如何在从gitlab repo分支创建作业时传递凭据?

时间:2017-09-14 20:37:27

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

我正在为github的每个应用程序分支创建一个作业。 我不知道如何将凭据传递给repo链接?

import groovy.json.*

def project = 'app-ras'
def branchApi = new URL("https://gitlab.etctcssd.com/sdadev/${project}/branches")
def branches = new JsonSlurper().parse(branchApi.newReader())
branches.each {
def branchName = it.name
def jobName = "${project}-${branchName}".replaceAll('/','-')
job(jobName) {
    scm {
        git("https://gitlab.etctcssd.com/sdadev/${project}.git", branchName)
    }
  }
}

我们的项目是gitlab中的安全项目,那么在这种情况下我如何传递凭证?

我相信它会重定向到登录页面。但我不知道如何处理这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我希望它能以下列方式发挥作用:

import groovy.json.JsonSlurper

def project = 'app-ras'
def branchApi = new URL("https://gitlab.etctcssd.com/sdadev/${project}/branches")
def branches = new JsonSlurper().parse(branchApi.newReader())

branches.each {
    def branchName = it.name
    String jobName = "${project}-${branchName}".replaceAll('/', '-')
    job(jobName) {
        scm {
            git {
                branch(branchName)
                remote {
                    url("https://gitlab.etctcssd.com/sdadev/${project}.git")
                    credentials("HERE")
                }
            }
        }
    }
}

尝试使用普通凭据(一种访问令牌)替换HERE或使用Jenkins - >下定义的凭据ID(类型为秘密文本)替换Credentials

另外,你使用的是gitlab还是github?

修改

据我所知,你在使用Jenkins DSL获取分支名称时遇到问题。 Here你可以看到如何从gitlab获取分支。在groovy中可以通过以下方式完成:

URLConnection connBranches = new URL("https://gitlab.etctcssd.com/sdadev/${project}/branches").openConnection()
connBranches.setRequestProperty("PRIVATE-TOKEN", "PASTE TOKEN VALUE HERE")
new JsonSlurper().parse(new BufferedReader(new InputStreamReader(connBranches.getInputStream())))