繁体   English   中英

Jenkins和Github中的DSL Job

[英]DSL Job in Jenkins and Github

我正在尝试在Github中获取某个回购的分叉,与执行相同:

curl -k -X GET https://api.github.com/repos/rackt/redux/forks

但是在詹金斯的DSL脚本中。

为什么? 因为我想克隆所有人的叉子,并在由job-dsl-plugin生成的单独作业上构建项目。

当然,这只是我找到的一个回购示例。 我正在尝试使用带有私有存储库的SSH凭据进行操作。

您知道哪种方法最好吗?

Wiki中有一个真实的示例,其中详细说明了如何为分支机构创建工作

def project = 'Netflix/asgard'
def branchApi = new URL("https://api.github.com/repos/${project}/branches")
def branches = new groovy.json.JsonSlurper().parse(branchApi.newReader())
branches.each {
    def branchName = it.name
    def jobName = "${project}-${branchName}".replaceAll('/','-')
    job(jobName) {
        scm {
            git("https://github.com/${project}.git", branchName)
        }
    }
}

您需要做的是将job部分移到each闭包之外,并使用派生名称。

至于您对ssh和private repos的评论。 通过使用Wiki所说的Credentials插件将ssh密钥保留在脚本之外是一个好主意

第一个选项涉及凭据插件 ,该插件以安全的方式管理凭据,并允许Job DSL脚本通过其标识符引用凭据。 这也是最安全的选项,因为不需要将凭据传递到Job DSL脚本。

// use the github-ci-key credentials for authentication with GitHub
job('example-1') {
    scm {
        git {
            remote {
                github('account/repo', 'ssh')
                credentials('github-ci-key')
            }
        }
    }
}

通过这样做,我终于解决了(请参阅我发布的要点)

import groovy.json.JsonSlurper

def owner = "<owner>"
def project = "<project>"

// curl -k -u <user>:<token> -X GET https://api.github.com/repos/<owner>/<repo>/forks > forks.txt

def fetch(addr, params = [:]) {
  def auth = "<personalAPIToken>" // see https://github.com/blog/1509-personal-api-tokens
  def json = new JsonSlurper()
  return json.parse(addr.toURL().newReader(requestProperties: ["Authorization": "token ${auth}".toString(), "Accept": "application/json"]))
}

def forks = fetch("https://api.github.com/repos/${owner}/${project}/forks")

forks.each {
    def fork = it.full_name
    def name = it.owner.login
    def jobName = "${project}-${name}".replaceAll('/','-')
    job(jobName) {
        scm {
            git {
              remote {
                github(fork, 'https')
                credentials('<idCredentials>')
              }
            }
        }
    }
}

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM