【发布时间】:2017-02-15 21:45:31
【问题描述】:
我编写了一个脚本,它将自动更新我们正在开发的库的版本文件。目前,我们使用的是P4 Plugin。
当 Jenkins 发现目录的更改(使用轮询)时,会触发构建。作为该构建的一部分,Jenkins 使用 Perforce 命令行客户端检查并使用脚本更新版本文件以匹配 Perforce 提交编号。
这一切都很好,问题是,当版本文件更新时,下一次轮询发生时,由于版本文件更改,它会触发构建。这导致触发构建以更新版本文件的无限循环。
我的问题是,如果更改来自某个 Perforce 用户,有没有办法告诉 Jenkins 不要构建?我发现Git plugin 似乎对谁/什么可以触发构建有非常灵活的规则,我想知道在 Jenkins 中是否有一种方法可以在不依赖外部插件或非 git 插件的情况下做到这一点,因为我正在使用 Perforce。
或者,如果只有某些文件发生了变化,甚至可以告诉 Jenkins 不要触发构建也可以工作。
有人对我如何解决这个问题有任何想法吗?
编辑: 每次有人向项目的主代码行提交时,版本都会发生变化。这样做是为了让我们可以跟踪一个内部库版本,并使其与制作它的 Perforce 提交保持同步。这样我们就可以跟踪哪个 Perforce 提交进行了更新,并且也可以在 Jira 中进行跟踪。
现在,该脚本只是一个愚蠢的 c# 命令行 exe。我希望避免将其连接到 P4API.NET 并自己编写所有这些逻辑。
【问题讨论】:
-
更新版本文件的脚本是构建的一部分吗?为什么?版本多久更改一次?如果没有任何变化,您可以将脚本更改为不接触版本文件吗?
-
更新了我的问题
-
您是否尝试过“排除用户更改”的轮询构建过滤器?
-
@tkosinski 你在哪里看到这个选项?我在 P4 插件中没有看到该选项
-
@tkosinski 哇,我不知道我以前是怎么错过这个选项的。我想我是想通过轮询来避免这样做,而我直接忽略了它。如果您想将其添加为答案,我可以接受。谢谢!
标签: jenkins continuous-integration perforce build-automation