让詹金斯每天自动构建一个,但仅在源代码更改时构建

Make jenkins auto build one a day but build only when there are source code changed

我在配置 jenkins 以自动构建和部署 java 项目时遇到问题。我想每天构建和部署一次。但是,此构建仅在白天发生变化。如果没有变化,我不希望詹金斯自动构建和部署。 注意:我使用gitlab作为源代码管理。 你能帮我配置一下吗?

这是详细文档:“Jenkins CI 集成

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


更新 以匹配您的评论。

您不想通过 webhook 触发 Jenkins 构建。没关系。

您想每天查看代码更改 1 次。

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/
  • Post 构建操作

    • Post 构建任务
    • 日志文本:commit
    • 操作:AND
    • 脚本:用于构建 Java
    • 的脚本
  • Jenkins 文本查找器

    • 同时搜索控制台输出
    • 正则表达式:Could not match
    • 如果找到则不稳定

首先,您应该将作业配置页面顶部的 Git SCM 部分配置为指向您的 GitLab 存储库。

然后您可以使用内置的 "Poll SCM" 构建触发器 — 这将定期检查您的源代码存储库是否已更改 — 如果已更改,将启动此作业的构建。

如果存储库自上次构建以来没有更改,则不会启动任何构建。

您可以配置此触发器——无论是使用类似 cron 的语法,还是像 @daily@midnight 这样的快捷方式——这样 Jenkins 每天只检查一次源存储库。

此外,您应该确保 "ignore post-commit hooks" 选项已启用。如果您使用 Git 存储库中的 webhooks 在提交发生时启动 Jenkins 作业,则此选项可防止每次 Git 提交触发您每天一次的作业。