让jenkins自动构建一个,但只有在源代码更改时才构建

时间:2016-05-10 04:57:05

标签: jenkins continuous-integration gitlab

我在配置jenkins时遇到问题,无法自动构建和部署java项目。我想每天构建和部署一次。然而,这种构建只在白天有变化。如果没有变化,我不希望jenkins自动构建和部署。 注意:我使用gitlab作为源代码管理。 你能帮我解决一下这个配置吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

此外,您应确保启用“忽略提交后挂钩”选项。如果您在Git存储库中使用webhooks在提交时启动Jenkins作业,则此选项会阻止每次Git提交触发每日一次的作业。

答案 1 :(得分: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/
  • 构建后的操作

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

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