在我的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的重点是,如果没有办法在脚本?
答案 0 :(得分:1)
使用yourjenkinshostname.com/pipeline-syntax/上的url为“checkout:General SCM”生成一个步骤。之后,填写所需仓库的信息,然后单击“其他行为”并为“Checkout to Subdirectory”添加一个。
最后点击“生成管道脚本”。它的输出应该可以在Jenkinsfile中使用。完成后,流程如下:
或者,如果您习惯于结帐步骤,则可以使用“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。