首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Jenkins管道将多个git代码库签出到子目录中。

使用Jenkins管道将多个git代码库签出到子目录中。
EN

Stack Overflow用户
提问于 2020-07-16 15:21:17
回答 2查看 201关注 0票数 0

我使用Jenkins Multiple SCM插件将两个git存储库签出到我的Jenkins作业中的两个子目录中。然后,我执行一组命令,使用从所有三个存储库提取的信息和代码构建一组工件。但是分支测试被检查了两次?工作区具有当前结构:

代码语言:javascript
运行
复制
root
-.git
-all other files
-test
-res

我希望工作区具有这样的结构。

代码语言:javascript
运行
复制
root
-test
-res
代码语言:javascript
运行
复制
           node (label: 'YYY'){
     checkout([  
                $class: 'GitSCM', 
                branches: [[name: '*/test']], 
                doGenerateSubmoduleConfigurations: false, 
                extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'test']], 
                submoduleCfg: [], 
                userRemoteConfigs: [[url: 'http://myrepo.git']]
            ])          
        
    dir('res') {
            git branch: 'master',  url: 'http://newrepo.git'
        }
    }
    
    pipeline {
        agent { label 'YYY' } 
        
        stages {
            xxx
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2020-07-16 15:48:31

为此,我使用了一个函数:

代码语言:javascript
运行
复制
def checkoutGitRepo(final String repoUrl, final String repoBranch, final String folder) {
    //checkout in folder
    dir ("${folder}") {
        git(url: "${repoUrl}",
            credentialsId: 'jenkins-git-credential-id-here',
            branch: "${repoBranch}"
        )
    }
}

您可以将该函数放在一个共享库中,并在需要的任何构建中调用它。

票数 0
EN

Stack Overflow用户

发布于 2020-07-16 17:06:28

你可以像这样克隆多个repos:

代码语言:javascript
运行
复制
stage('Setup workspace') {
    dir('proj1') {
        git([url: 'git@gitlab.xxx.local:chenchuk/proj1.git', branch: 'master'])
    }
    dir('proj2') {
        git([url: 'git@gitlab.xxx.local:chenchuk/proj2.git', branch: 'master'])
    }
}

虽然这不在问题中,但值得一提的是,它也可以并行进行,如下所示:

代码语言:javascript
运行
复制
stage('Setup workspace') {
    parallel('clone projects': {
        dir('proj1') {
            git([url: 'git@gitlab.xxx.local:chenchuk/proj1.git', branch: 'master'])}
    }, 'clone sf_tasks': {
        dir('proj2') {
            git([url: 'git@gitlab.xxx.local:chenchuk/proj2.git', branch: 'master'])}
    })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62929517

复制
相关文章

相似问题

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