如何使用 Jenkins Workflow 插件进行 SCM 轮询

2024-01-22

在普通的自由式项目中,我将 SCM 插件配置为指向我想要发布的 Git 存储库,并启用“轮询 SCM”选项,这允许我配置一个 Stash webhook 来告诉 Jenkins 每当有更改时到那个仓库。这样,只要将更改推送到存储库,就可以触发作业。

但是,当我使用工作流而不是自由式项目时,我需要构建的代码的 SCM 是在 groovy 工作流脚本中以编程方式指定的,这意味着它不会侦听 Stash webhook。相反,直接在工作流程中配置的 SCM 是 groovy 脚本本身的 SCM,它与我尝试构建/发布的代码库不同,因此我不希望触发器基于此。

node('docker_builder') {
    git url: serviceRepo
    releaseVersion = getVersion()
    pipelineSpec = getPipelineSpec()
    sh "./gradlew clean build pushDockerImage"
}

关于使用工作流插件时如何实现 SCM 轮询有什么想法吗?


我通过大量的研究和实验解决了这个问题。该文档让我走上了正轨:https://github.com/jenkinsci/workflow-scm-step-plugin/blob/master/README.md https://github.com/jenkinsci/workflow-scm-step-plugin/blob/master/README.md。它说:

支持跨多个 SCM 进行轮询(一个或多个 SCM 中的更改将触发新的构建),并且再次根据工作流程的最后一个构建中使用的 SCM 进行轮询。”

这意味着 Jenkins 工作流程仍然支持 SCM 轮询,但与普通的自由式项目不同,您必须在开始侦听 SCM 更改之前手动运行一次。这是有道理的,因为 SCM 是在 Groovy 代码中定义的;直到运行一次后才知道它们。

其中一个棘手的因素是您可以在工作流程中定义许多 SCM。例如,我有三个:一个用于服务本身、一个部署脚本和 Groovy 工作流 DSL。默认情况下,对这三个 SCM 中任何一个的更改都会导致“SCM 轮询”选项触发构建,这可能是不可取的。幸运的是,在 Groovy 代码中的“git”步骤上设置“poll: false”选项将禁用对该存储库的轮询。如果您正在从 SCM 读取 Groovy DSL,那么您可以通过单击 Jenkins UI 中的“其他行为”并添加“不要触发构建提交通知”来禁用对该存储库的轮询。

另一个棘手的因素是,Stash Web hook 插件默认包含在 RESTful URL 中提交的 SHA1 哈希码,该 URL 用于访问 Jenkins。不幸的是,当 Jenkins 尝试提取您可能定义的多个 SCM 中的任何一个时,它会犯下使用相同提交代码的错误。当然,哈希码仅与一个 SCM 相关,因此它会被破坏。您可以通过在 Stash Web hook 插件中设置“省略 SHA1 哈希代码”来解决此问题。然后 Jenkins 将仅使用您在每个 SCM 中构建的任何分支上的最新提交。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Jenkins Workflow 插件进行 SCM 轮询 的相关文章

随机推荐

  • 为什么 jQuery 会抛出错误“fadeOut is not a function”?

    我正在使用 jQuery 并将以下代码放入我的 javascript 中 function HideMe itemID var myDiv item itemID myDiv fadeOut slow 但它给了我这个错误 fadeOut不是
  • Node/Express文件上传

    我正在使用 Node v0 10 26 和 Express v4 2 0 而且我对 Node 还很陌生 在过去的三个小时左右的时间里 我一直在用头撞桌子 试图让文件上传表单与节点一起使用 此时我只是试图让 req files 不返回未定义
  • Java 中 LTRIM 和 RTRIM 的良好替代品是什么?

    JavaScript 的一个好的替代品是什么ltrim and rtrim Java 中的函数 使用正则表达式你可以写 String s String ltrim s replaceAll s String rtrim s replaceA
  • 在Vba中从多个工作表中收集平均值

    我需要将多个工作表中某个范围 C2 C11 的平均值计算到一个新工作表中 如果添加新工作表并将数据输入到指定范围内 该功能应该仍然有效 到目前为止我有这个 Sheets Add Dim myavg As Collection Set mya
  • php彩票问题多赢家问题

    我用 php 创建了一个彩票脚本 我现在的问题是选择不止一名获胜者 因为玩家的门票上有可能有相同的号码 这里我提供两个表结构和源代码 lotto game id int jackpot int status varchar10 pick 1
  • 如何使用Java JSch库逐行读取远程文件?

    我正在尝试使用Java逐行读取文件 这非常简单 stackoverflow com上有多种解决方案 但这里需要注意的是该文件位于远程服务器上 并且它不是可以获取本地副本 它是单个 txt 文件中数百万条亚马逊评论的大量集合 JSch 附带了
  • 毛伊岛:在 Android 上使用 Acrobat Reader 打开捆绑(资产)pdf 文件

    我的应用程序在下面有一个 PDF 帮助文件Resources Raw helpfile pdf 在 Android 上 应通过将其 发送 到 Acrobat Reader 来打开它 前提是它已安装在设备上 我尝试了像 从捆绑文件写入应用程序
  • 如何以 Symfony 形式制作 RadioButton?

    我有必须用 Symfony Form 重做的表单 但我坚持在这个地方 div class currency label div
  • 从 C# 打开新的 Outlook 邮件

    我希望从我的程序中生成 Outlook 消息 我能够从程序中构建和发送或构建并保存 我想要的是构建然后显示以允许用户从 AD 列表中手动选择收件人 下面的代码是此处示例和其他教程站点的混合 但是我找不到一个只是构建然后 显示 电子邮件而不保
  • Xcode 4 使用不同的配置设置构建静态库依赖项

    我想知道是否可以使用不同的配置设置编译依赖的静态库 我的情况是我有一个项目 project pbxproj 它依赖于静态库 cocoa touch 项目 libStatic pbxproj 我的项目有 3 个配置设置 例如调试 发布和临时配
  • 将列表转换为 pandas 中的日期时间

    我有福尔 熊猫列表 str jan 1 jan 15 feb 1 feb 15 mar 1 mar 15 apr 1 apr 15 may 1 may 15 jun 1 jun 15 jul 1 jul 15 aug 1 aug 15 se
  • 如何在 Android 上停止 HttpURLConnection 连接

    我使用 AsyncTask 连接 URLPath 如下代码所示 Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceStat
  • 从任何活动中打开侧栏应用程序启动器

    我是 Android 开发新手 我正在考虑创建一个示例启动器应用程序来替换 Android 默认启动器 我已经创建了这个启动器 但我面临几个问题 1 单击 应用程序 按钮后 我将显示设备上安装的所有应用程序 但应用程序图标的大小不同 我尝试
  • 如何将遗传算法与一些启发式算法相结合

    我正在研究大学调度问题并为此使用简单的遗传算法 实际上它效果很好 可以在 1 小时内将目标函数值从 0 优化到 90 大约 但随后这个过程会急剧减慢 需要几天时间才能得到最佳解决方案 我看到很多论文认为将其他算法与遗传算法混合是合理的 请您
  • ASP.NET MVC 自定义路由约束、依赖注入和单元测试

    关于这个话题 我又问了一个问题 ASP NET MVC 自定义路由约束和依赖注入 https stackoverflow com questions 8308642 asp net mvc custom route constraints
  • 如何使用网络音频 API 播放声音文件 Safari?

    我正在修改一个脚本来播放我在 Codepen 上找到的 mp3 以使其能够在 Safari 上运行 在 Firefox 和 Chrome 中它工作正常 但 Safari 抱怨 未处理的承诺拒绝 类型错误 没有足够的参数 索引 html 25
  • 尝试安装biopython后Conda返回未找到属性错误符号

    我正在尝试让biopython工作 似乎我在这个过程中破坏了conda 此时 将显示 conda 的帮助菜单 并且conda version回报conda 4 7 5但其他任何事情包括conda info抛出错误AttributeError
  • 在树枝中显示货币符号

    如何在树枝中显示货币符号 我保存了符号的数值 例如 for EURO 8364 for DOLLAR 36 当我渲染这些值时 被转换为 amp 并且货币符号不显示 任何想法将不胜感激 谢谢 为了做得好 你必须添加一个function htt
  • 使用knitr生成复杂的动态文档

    最小的可重现的示例 RE 下面是我尝试弄清楚如何使用knitr用于生成复杂的动态文档 这里的 复杂 不是指文档的元素及其布局 而是指非线性逻辑底层 R 代码块 虽然提供的 RE 及其结果表明solution 基于这种方法可能效果很好 我会喜
  • 如何使用 Jenkins Workflow 插件进行 SCM 轮询

    在普通的自由式项目中 我将 SCM 插件配置为指向我想要发布的 Git 存储库 并启用 轮询 SCM 选项 这允许我配置一个 Stash webhook 来告诉 Jenkins 每当有更改时到那个仓库 这样 只要将更改推送到存储库 就可以触