【问题标题】:Jenkins Multibranch Pipeline triggering builds from multiple SCM reposJenkins Multibranch Pipeline 从多个 SCM 存储库触发构建
【发布时间】:2017-03-13 18:23:03
【问题描述】:

我配置了一个 Jenkinsfile 管道,并且一个多分支管道指向一个 git 存储库,(A)。在同一个 Jenkinsfile 中,我从 git 存储库中提取代码,(B) 以执行一些独立的步骤。

我想让 jenkins 轮询 A 存储库 - 并且每当它发现更改时 - 构建它。这是有效的。

但是,它也在轮询 repo B。每当 repo B 中发生更改时(通常是这样),它就会获取更改并开始构建。

我怎样才能关闭对这个其他 repo 的轮询?谢谢

【问题讨论】:

    标签: git jenkins jenkins-pipeline


    【解决方案1】:

    在 Jenkins 中使用管道语法 sn-p 生成器我想出了这个:

    checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[]]]
    

    【讨论】:

    • 为了查看 repo A,我使用的是checkout scm。为了检查 repo B,我使用git branch: 'production', credentialsId: '00000000-0000-0000-0000-00000000', url: 'git@host:repo.git' 我不认为我可以将 poll 选项与 'git branch' 一起使用。也许我用 git 命令拉 repo B 做错了?
    • 我按照你的建议从 git branch 命令切换到 checkout scm(包括 poll: false,)但是当第二个 repo (B) 有提交时它仍然触发提交。
    • 这是否是一种解决方案,您尝试从 Pipeline 脚本中找出哪个存储库触发了构建,然后中止构建以防万一它是错误的?
    【解决方案2】:

    我想这是一个已知问题。 https://issues.jenkins-ci.org/browse/JENKINS-38508

    【讨论】:

    • 在我的例子中,我发现我可以通过在构建过程结束时正确清理我的工作区来解决这个问题。由于没有可比较的东西,二级回购 B 无法检测到任何变化。使用 step([$class: 'WsCleanup']) 进行清理。
    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    相关资源
    最近更新 更多