Jenkins多分支流水线:如何将第二个Git仓库合并至默认仓库
解决Jenkins MultiBranch Pipeline多仓库克隆覆盖问题
问题核心:MultiBranch Pipeline默认会将Project1克隆到工作空间根目录,后续未指定目录的git checkout操作会直接覆盖根目录内容,导致Project1被替换。
以下是两种简便方案,实现Project1和Project2在工作空间中分别以独立文件夹共存:
方案一:用dir步骤指定克隆目录
通过dir步骤切换到目标子目录执行git克隆,确保Project2被克隆到Project2文件夹下,不会干扰已存在的Project1。
修改后的完整流水线脚本:
pipeline { agent { label 'agent' } stages { stage('Project1 checkout automatically') { steps { script { echo "Project1 is cloned automatically by the given Jenkins configuration" } } } stage('Project2 checkout phase'){ steps{ dir('Project2') { // 指定克隆到当前工作空间下的Project2目录 git branch: 'master', credentialsId: 'b9152824f', url: 'https://git/Project2.git' } } } } }
方案二:使用checkout步骤配置目标目录
如果需要更灵活的git扩展配置(如浅克隆、稀疏检出),可以用checkout步骤结合RelativeTargetDirectory扩展指定目标目录:
修改后的Project2阶段代码:
stage('Project2 checkout phase'){ steps{ checkout([ $class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[url: 'https://git/Project2.git', credentialsId: 'b9152824f']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'Project2']] ]) } }
两种方案执行后,工作空间根目录下会同时存在Project1和Project2两个文件夹,各自保留对应仓库的内容。
内容的提问来源于stack exchange,提问作者vel
相关产品推荐
相关产品推荐

