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

时间:2015-11-29 10:10:44

标签: git jenkins continuous-integration build-process

我在Jenkins及其Git插件方面遇到了一些问题。

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

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

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

有人设法做到了吗?

3 个答案:

答案 0 :(得分:14)

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

排除特定消息

  

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

排除特定的提交者

  

作业配置页 - >源代码管理 - > Git - >添加 - >轮询忽略来自特定用户的提交

不要忘记点击每个文档末尾的帮助以了解正确的使用方法。

答案 1 :(得分:1)

如果您还没有找到解决方案:

  1. 将您的作业配置为轮询SCM,但不要为此输入时间计划(忽略您的作业永远不会运行的警告。

  2. 配置scm部分以忽略提交,用户等

  3. 为您的工作使用触发器,如Git Plugin page

  4. 所示http://yourserver/git/notifyCommit?url=<URL of the Git repository>[&branches=branch1[,branch2]*][&sha1=<commit ID>]

    每当调用URL时,jenkins将扫描使用此存储库的作业。然后它检查任何特定设置(例如,忽略某些用户的提交或某些提交消息)并运行构建与否。当然,构建将始终以某种方式开始轮询scm并检查提交,但如果由于不重要的提交而被取消,则不会在历史记录中看到中止的构建。

答案 2 :(得分:0)

您需要使用外部脚本。

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

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

git log

git log --all --grep='<your message>'
# and you can add more flags if you want of course:
git log --all --oneline | grep '<your message>'

git grep

git grep '<your message>' $(git rev-list --all)

詹金斯之外

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

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

了解更多here&amp; here