Git参数管道脚本

时间:2016-12-27 14:15:17

标签: git jenkins groovy jenkins-pipeline

我正在尝试在Jenkins(2.19.4)中获得参数化管道作业以使用以下规范:

  • BRANCH_TO_BUILD Git参数,用于从gitlab存储库中检索所有可用分支,供用户选择一个
  • Groovy Pipeline脚本,运行不同的阶段,在用作SCM的Jenkins文件时效果很好。

我得到的错误与Git参数有关:

net.uaznia.lukanus.hudson.plugins.gitparameter.jobs.WorkflowJobWrapper getSCMFromDefinition
SEVERE: Get repo scm from Workflow job fail
java.lang.NoSuchMethodException: org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition.getScm()

据我所知,在请求参数输入之前,Jenkins无法从管道脚本中检索SCM配置。

我知道有一个新的功能请求JENKINS-39530但是有不同的方法来实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

根据我的理解,你想要一个用户选择分支的工作。分支应与GitLab中的分支保持同步。

一种方法是使用Job DSL plugin

  1. 创建一个可能称为 job-creator 的作业,每隔X分钟运行一次,或者从GitLab触发。
  2. job-creator 运行DSL构建步骤。
  3. DSL可能会要求GitLab使用REST来获取分支。循环遍历分支以创建管道作业。
  4. 作业DSL看起来与此类似:

    ...
     pipelineJob("the pipeline job") {
      parameters {
       def branches = ['[Choose]']
       getJson(server+ "/rest/request/to/gitlab...")
        .values
        .each { branch ->
        if (branch.displayId.startsWith('feature')) {
         branches.push(branch.displayId)
        }
       }
       choiceParam(
        'branch',
        branches,
        'Pick a branch.')
      }
    ...
    

答案 1 :(得分:0)

对我来说 我使用Input阶段与运行的用户管道进行交互。管道是自己没有参数,但在运行时你有一个输入,询问用户他们想要建立你通过检查git projet启动管道,你使用工作平台与awk生成signe上的分支列表文件,然后您使用此文件来构建输入的选择。 您可以在此链接中看到示例:enter link description here