Jenkins - 不要为特定的提交者或提交消息构建

Nic*_*dis 8 git continuous-integration build-process jenkins

我在使用Jenkins及其Git插件时遇到了一些问题.

目前,Gitlab服务器正在触发构建,但我想配置作业,以便在提交中包含特定消息时不构建它.

我尝试过使用ci-skip插件(https://github.com/banyan/jenkins-ci-skip-plugin),但是不是没有启动作业,插件允许它启动但是然后中止它.

它完成了这项工作,但我已经在Jenkins历史中中止了构建,而我正试图避免这种情况.

有人设法做到了吗?

mai*_*mer 15

Jenkins git插件本身已经提供了这些高级用法.

排除特定邮件

作业配置页面 - >源代码管理 - > Git - >添加 - >轮询忽略对某些消息的提交

排除特定的提交者

作业配置页面 - >源代码管理 - > Git - >添加 - >轮询忽略某些用户的提交

不要忘记单击每个末尾的帮助以了解正确的使用方法.

  • 如果您正在使用jenkins作业的轮询,则此方法有效.帮助具体说:```如果设置,并且Jenkins设置为轮询更改,Jenkins将在确定是否需要触发构建时忽略用户在此列表中提交的任何修订.``看起来好像你使用git钩子而不是轮询你可能会卡住.这很奇怪,因为民意调查很糟糕且挂钩很好. (7认同)
  • 如果使用的是钩子,则应签入钩子,因为如果钩子触发了构建,那么现在就不进行Jenkins中的构建为时已晚。您只能中止构建。 (2认同)
  • 所以詹金斯说这只适用于民意调查,但在我们的测试中,我们发现它也适用于来自github的推送.我们发现,如果在每次构建后清除工作区,它将不会适当地过滤推送,您必须在每次构建后保留工作区. (2认同)

Cod*_*ard 0

您将需要使用外部脚本。

拉出项目(git clone/fetch),然后在继续构建之前检查特定消息是否在您的存储库中。

要检查您的消息是否存在,您可以使用 git show 或 git log 命令。

git 日志

git log --all --grep='<your message>'
# and you can add more flags if you want of course:
git log --all --oneline | grep '<your message>'
Run Code Online (Sandbox Code Playgroud)

git grep

git grep '<your message>' $(git rev-list --all)
Run Code Online (Sandbox Code Playgroud)

詹金斯之外

添加代码来git hook检查您想要查找的内容*消息、提交等),并且仅当它找到时才通过 REST API 调用 Jenkins 并开始您的工作。

这就是我使用 Jenkins 的方式,我检查我正在寻找的东西,然后通过 API 调用 Jenkins

在这里这里阅读更多内容

  • 这很酷,但它并不能解决我的问题,因为该作业仍将启动,然后在詹金斯历史记录中显示为中止。我想知道是否可以对其进行配置,使其根本不启动。 (2认同)