git - 带有两个 git 存储库的 Jenkinsfile

标签 git jenkins jenkins-pipeline

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

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

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

目前我的 Jenkinsfile 看起来像这样

node {
  stage 'build'
  checkout scm

我正在作业配置中定义 vms.git 存储库。

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

最佳答案

您可以使用checkout check out 多个目录,但您必须指定要 check out 的目录。您可以使用 jenkins 生成代码片段(代码片段生成器在脚本字段下方)。 选择 checkout ,下一个 git 存储库,并在其他行为中选择: checkout 到子目录。

当您将拥有 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 - 带有两个 git 存储库的 Jenkinsfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37395860/

相关文章:

git - 您可以使用 git merge 并推送另一个分支吗?

git - 撤消 git 自动 merge

docker - 使用 Jenkins docker 插件拉取并运行 docker 镜像

ios - Jenkins Pipeline 在多个模拟器和 sdk 版本上测试 iOS 应用程序

jenkins - 如何从 Jenkins 管道中的另一个文件调用函数?

git - Gitlab CE 的高内存使用率

python - 符合 PEP440 和 git 描述部署包中可用的信息

jenkins job dsl - 没有方法签名 : java. lang.String.call()

email - Jenkins 可以发送不止一封电子邮件吗?

jenkins - 如何以编程方式触发通过 github-organization 管理的特定 jenkins 构建?