繁体   English   中英

Jenkinsfile有两个git存储库

[英]Jenkinsfile with two git repositories

我正在使用Jenkins管道插件和Jenkinsfile。

在一个名为vms.git的存储库中,我有Jenkinsfile和它构建的应用程序。

我有另一个名为deploy.git的存储库,它包含我想用来在vms.git中部署应用程序的脚本。

目前我的Jenkinsfile看起来像这样

node {
  stage 'build'
  checkout scm

我在作业配置中定义了vms.git repo。

所以我想要检查两个存储库,然后使用vms.git中的Jenkinsfile来定义构建的其余部分。 我想在其他管道中重用deploy.git脚本,所以我不想在其中放置Jenkins文件。

您可以使用checkout签出多个目录,但是您必须指定要将其签出的目录。 您可以使用jenkins(Snippet generator bellow script字段)生成片段。 选择checkout,下一个git存储库,在Additional Behaviors中选择:checkout into sub directory。

如果您将拥有2个存储库,则可以从要load存储库中加载脚本。 例:

node {
    // first repository
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory1']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo1.git']]])
    // second repository
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'subdirectory2']], submoduleCfg: [], userRemoteConfigs: [[url: 'repo2.git']]])
    // run first script
    load 'subdirectory1/Jenkinsfile'
    // run second script
    load 'subdirectory2/Jenkinsfile'
}

可以在此线程中找到另一个在单个管道中处理多个Git存储库的优雅解决方案。

node {
    dir('RepoOne') {
        git url: 'https://github.com/somewhere/RepoOne.git'
    }
    dir('RepoTwo') {
        git url: 'https://github.com/somewhere/RepoTwo.git'
    }

    sh('. RepoOne/build.sh')
    sh('. RepoTwo/build.sh')
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM