我想查看Jenkins multibranch管道中的第二个回购

时间:2017-05-09 18:10:56

标签: jenkins jenkins-pipeline

在我的Jenkins文件中," checkout scm"命令将检查我在配置面板中配置的任何repo。

但是如果我在Jenkins文件中添加第二个回购怎么办?有没有办法检查出工作区内的一个特定目录?问题是,我不想将任何URL硬编码到我的Jenkins文件中。这是我想要实现的内容的例证:

stage("Checkout") {
  checkout scm // Works fine, checks out the 1st consifured repo to workspace.

  dir("src") {
  checkout scm // Checks out the exact same repo again, but how can I change this to colone the 2nd repo instead?
  }
}

基本上 - 我可以放什么而不是第二次"结账scm"这将使它拉动Multibranch管道Web配置中配置的第二个repo?

并且假设这实际上是不可能的 - 甚至允许用户在配置表单中提供多个repo的重点是,如果没有办法在脚本?

1 个答案:

答案 0 :(得分:1)

使用yourjenkinshostname.com/pipeline-syntax/上的url为“checkout:General SCM”生成一个步骤。之后,填写所需仓库的信息,然后单击“其他行为”并为“Checkout to Subdirectory”添加一个。

最后点击“生成管道脚本”。它的输出应该可以在Jenkinsfile中使用。完成后,流程如下:

Syntax Generator Example

或者,如果您习惯于结帐步骤,则可以使用“RelativeTargetDirectory”扩展类来执行此操作。结账时的结账步骤如下所示:

checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'test-dir']], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/jenkinsci/puppet-jenkins.git']]])

关键部分是......

extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'test-dir']]

编辑:根据issues.jenkins-ci.org/browse/JENKINS-32018,多分支作业的多个来源不是针对两个不同的存储库,而是针对单个存储库的多个源。

我担心你需要在网址中进行硬编码。方法是有两个多分支工作。一个将SCM作为回购A并硬编码回购B,另一个将回购B作为SCM,并硬编码回购A。