2017-09-14 99 views
1

我正在为每个应用程序分支从github创建一个作业。 我不知道如何将凭据传递给回购链接?job-dsl - 如何从gitlab 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

我希望它会按以下方式工作:

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用普通证书(一种访问令牌)的规定,或根据定义的凭证ID(类型秘密文本Jenkins - >Credentials

另外,你使用gitlab或github?

编辑

所以据我了解,你有与詹金斯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()))) 
+0

试过但是同样的错误。我正在使用gitlab – ryan1506

+0

@ ryan1506,你是什么意思与_相同error_? – Opal

+0

这里是错误:“groovy.json.JsonException:”我想我的git实验室分支api url不正确。 – ryan1506