每天自动构建Jenkins,但仅在源代码更改时构建

3

我在配置Jenkins自动构建和部署Java项目时遇到了问题。我希望每天自动构建和部署一次,但仅在当天有更改时才进行构建。如果没有更改,则不希望Jenkins自动构建和部署。

注意:我使用GitLab作为源代码管理工具。

你能帮助我进行这个配置吗?

2个回答

3
首先,在作业配置页面的顶部配置Git SCM部分,使其指向您的GitLab存储库。
然后,您可以使用内置的“轮询SCM”构建触发器 - 这将定期检查您的源代码存储库是否发生更改 - 如果有更改,则会启动此作业的构建。
如果自上次构建以来存储库没有更改,则不会启动构建。
您可以配置此触发器 - 无论是使用类似于cron的语法还是快捷方式(如@daily或@midnight) - 以便Jenkins仅每天检查一次源存储库。
此外,您应确保启用了“忽略提交后挂钩”选项。如果您正在使用Git存储库中的Webhook在每次提交时启动Jenkins作业,则此选项可防止触发您每天运行一次的作业进行每个Git提交。

太好了,我也找到了那个解决方案。不过,选项“忽略提交后钩子”是用来做什么的?你能简单解释一下吗? - chetra tep
@chetratep,答案中已经提到了。如果您正在使用git webhooks来启动Jenkins作业,则启用此选项将防止传入的Webhooks触发此作业的构建。 - Christopher Orr

1
这是详细文档: "Jenkins CI集成"

http://doc.gitlab.com/ee/integration/jenkins.html


更新以匹配您的评论。

您不想通过Webhook触发Jenkins构建。没问题。

您想每天检查一次代码更改。

例如,在Linux上,如果有任何代码更改,则在早上6:00进行构建。

像这样

SINCE=`curl http://192.168.0.1:8080/job/MyJava/lastStableBuild/buildTimestamp?format=dd-MMM-yyyy`

cd /opt/code/myjava/

git log --pretty="%h - %s" --author=gitster --since=$SINCE --before=$SINCE --no-merges -- t/
  • 构建后操作

    • 构建后任务
    • 记录文本:提交
    • 操作:AND
    • 脚本:您的Java构建脚本
  • Jenkins文本查找器

    • 同时搜索控制台输出
    • 正则表达式:无法匹配
    • 如果找到则不稳定

我知道这个配置。但是看起来你不理解我的问题。我想问一下是否有办法让Jenkins更加智能,能够在一天内识别源代码的变化,如果有变化就进行构建,但如果没有变化则不进行任何操作。你明白我的意思吗? - chetra tep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接