可以将隐藏的值从Pi​​pelineJob传递到Jenkins脚本化管道中的脚本吗?

时间:2020-05-15 13:52:42

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

我想在多个pipelineJob定义中重用脚本,同时对一些参数值进行硬编码并使它们对用户不可见。这将使我可以使脚本更加通用,并向用户隐藏不必要的技术知识。

例如,我想使用相同的“ myapp_build.groovy”脚本,但传入不同的git repos或OS类型以供使用(我将其标记为“ hiddenParam”以表示应将其隐藏):

def jobDslScript = 'pipelines/myapp_build.groovy'

pipelineJob("my-app-build") {
  description("Build my-app image")
  parameters {
    choiceParam('environment', ['dev','uat','prod'], 'Environment to build in')
    stringParam('gitBranchName', '', 'git branch name')
    hiddenParam('gitRepoName', 'https://my-repo.github.com', 'git repo path')
    hiddenParam('os_type', 'linux', 'OS to use')
  }
  definition {
    cps {
      script(readFileFromWorkspace(jobDslScript))
      sandbox()
    }
  }
}

pipelineJob("my-other-app-build") {
  description("Build my-other-app image")
  parameters {
    choiceParam('environment', ['dev','uat','prod'], 'Environment to build in')
    stringParam('gitBranchName', '', 'git branch name')
    hiddenParam('gitRepoName', 'https://my-other-repo.github.com', 'git repo path')
    hiddenParam('os_type', 'windows', 'OS to use')
  }
  definition {
    cps {
      script(readFileFromWorkspace(jobDslScript))
      sandbox()
    }
  }
}

这将创建2个不同的pipelineJob,它们使用不同的参数调用同一脚本。

当前,我通过将这些“ hiddenParam”作为choiceParam的仅一个选项来实现这一点,由于用户无法更改它(并且我不希望他们更改它),因此这似乎毫无意义。 “ myapp_build.groovy”脚本处理所有不同的参数,并且我不想使用同一脚本的多个几乎完全相同的副本,只是在开始时设置了不同的“ hidden”值。

有没有办法做到这一点?我的一个限制是我无法添加新插件,所以如果有一种方法可以使用香草pipelineJob来实现,那就太好了。

0 个答案:

没有答案