首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将多个git存储库签出到同一Jenkins工作区

将多个git存储库签出到同一Jenkins工作区
EN

Stack Overflow用户
提问于 2013-02-13 07:19:17
回答 9查看 179.7K关注 0票数 141

使用Jenkins 1.501和Jenkins Git插件1.1.26

我有3个不同的git仓库,每个都有多个项目。

现在,我需要将3git代码库中的所有项目签出到Jenkins slave上的同一工作区中。我在源代码管理: Multiple SCMs中定义了每个git存储库。但每次签出存储库时,以前的存储库(及其相关项目)都会被删除。

我读过这篇文章:

http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html

但这并没有真正的帮助。我尝试为所有存储库(可选)指定本地子目录下的相同文件夹,但它给出了相同的结果。

如果使用Jenkins根本不可能做到这一点,我想可以使用一些预先构建的步骤/脚本来将项目移动到正确的位置。它不是一个修改项目构建配置的选项。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-02-13 08:14:01

使用Jenkins + Git插件无法在单个工作区中同时检出多个存储库。

作为一种解决办法,您可以有多个上游作业,每个作业签出一个存储库,然后复制到最终项目工作区(在许多级别上都有问题),或者您可以设置一个shell脚本步骤,在构建时将每个需要的存储库签出到作业工作区。

以前,多个SCM插件可以帮助解决这个问题,但现在它已被弃用。在Multiple SCM plugin页面中:“用户应该迁移到https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin。Pipeline提供了一种更好的方法来检出多个SCM,并得到了Jenkins核心开发团队的支持。”

票数 76
EN

Stack Overflow用户

发布于 2013-06-28 21:20:44

使用多SCM插件:

  • 为您需要检出的每个存储库(主项目或从属项目)创建不同的存储库条目。
  • 对于每个项目,在“高级”菜单(第二个“高级”菜单中,每个存储库有两个标记为“高级”的按钮)中,找到"Local subdirectory for repo (optional)“文本字段。您可以在"workspace“目录中指定要将项目复制到其中的子目录。您可以映射我的开发计算机的文件系统。

“第二个高级菜单”不再存在,需要做的是使用“添加”按钮(在“附加行为”部分),并选择“签出到一个子目录”。

  • 如果您使用的是ant,就像现在的build.xml文件一样,构建目标不在工作区的根目录中,而是在子目录中,您必须在“ Ant”配置中反映这一点。为此,在“调用ant”中,按“高级”并填充“构建文件”输入文本,包括build.xml所在的子目录的名称。

希望这能有所帮助。

票数 82
EN

Stack Overflow用户

发布于 2017-04-07 16:39:29

因为Multiple SCMs Plugin已被弃用。

使用Jenkins Pipeline可以签出多个git代码库,并在使用gradle构建它之后

node {   
def gradleHome

stage('Prepare/Checkout') { // for display purposes
    git branch: 'develop', url: 'https://github.com/WtfJoke/Any.git'

    dir('a-child-repo') {
       git branch: 'develop', url: 'https://github.com/WtfJoke/AnyChild.git'
    }

    env.JAVA_HOME="${tool 'JDK8'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}" // set java home in jdk environment
    gradleHome = tool '3.4.1' 
}

stage('Build') {
  // Run the gradle build
  if (isUnix()) {
     sh "'${gradleHome}/bin/gradle' clean build"
  } else {
     bat(/"${gradleHome}\bin\gradle" clean build/)
  }
}
}

您可能希望考虑使用git submodules,而不是像这样的自定义管道。

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14843696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档