我在Jenkins及其Git插件方面遇到了一些问题。
目前,Gitlab服务器正在触发构建,但我想配置作业,以便在提交中包含特定消息时不构建该作业。
我已尝试使用ci-skip插件(https://github.com/banyan/jenkins-ci-skip-plugin),但该插件不是没有启动作业,而是允许它启动,然后中止它。
它完成了这项工作,但我在Jenkins的历史中已经中止了构建,我试图避免这种情况。
有人设法做到了吗?
答案 0 :(得分:14)
Jenkins git插件本身已经提供了这些高级用法。
作业配置页 - >源代码管理 - > Git - >添加 - >轮询忽略对某些消息的提交
作业配置页 - >源代码管理 - > Git - >添加 - >轮询忽略来自特定用户的提交
不要忘记点击每个文档末尾的帮助以了解正确的使用方法。
答案 1 :(得分:1)
如果您还没有找到解决方案:
将您的作业配置为轮询SCM,但不要为此输入时间计划(忽略您的作业永远不会运行的警告。
配置scm部分以忽略提交,用户等
为您的工作使用触发器,如Git Plugin page
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 --all --grep='<your message>'
# and you can add more flags if you want of course:
git log --all --oneline | grep '<your message>'
git grep '<your message>' $(git rev-list --all)
将代码添加到git hook
,检查您要查找的内容*消息,提交等),并且只有在找到它时才会通过REST API调用Jenkins并开始工作。
这是我使用Jenkins的方式,我检查我要找的东西,然后我通过API调用Jenkins