首页 > 解决方案 > Jenkins Pipeline:如何避免对存储库进行轮询

问题描述

我有一个 Jenkins Pipeline,它从 3 个不同的存储库下载源代码。必须下载其中一个才能执行该作业,但不必轮询它来触发新的构建。

例如: - REPO A - REPO B - 要执行的脚本

在管道中,我检查了所有这些,并使用第三个(脚本)在管道内执行一些脚本。

我需要检查所有这些,但我不想让詹金斯在第三个 repo 上投票,而只在前两个上投票。此时,Jenkins 会在任何时候发现其中一个有任何变化时启动一个新构建。这意味着如果我更改脚本,Jenkins 会启动包含该 repo 的每个项目。

这是我用来检查存储库的管道的一部分

stage('Prepare/Checkout') {

        git branch: 'master',
        credentialsId: '***',
        url: 'http://repo.com/repoA.git'

        dir('common') {
            git branch: 'master',
            credentialsId: '***',
            url: 'http://repo.com/repoB.git'
        }

        dir('script') {
            git branch: 'master',
            credentialsId: '****',
            url: 'http://repo.com/scripts.git'
        }


        sh 'mv script/* .'
        load 'env.properties'
    }

添加简单轮询配置的屏幕截图。这与我的非常相似(我有 H/2 而不是 */5) 截图

标签: gitjenkinsrepository

解决方案


您可以配置将触发您工作的 Web 挂钩,而不是在 Jenkins 上设置轮询来检查更新。您可以在代码推送操作的 Git 存储库上配置 Web 挂钩。因此,当一个新代码被推送到 repo 时,web hook 将触发 Jenkins 构建。您可以使用以下 Cloudbees 文档,其中详细说明了如何配置它。

https://support.cloudbees.com/hc/en-us/articles/224543927-GitHub-Integration-Webhooks


推荐阅读