仅在存储库中找到更改时才定期构建项目

Rob*_*anu 7 git continuous-integration jenkins sonarqube

我有以下设置活动和工作:

  • Jenkins与Git和Sonar插件
  • 一个jenkins工作(project)每分钟调查Git
  • 一个jenkins工作(project-sonar)每24小时轮询一次git

两个作业共享相同的git存储库.

这允许我为每个提交构建我的项目,然后每天,只有在项目发生变化时才运行Sonar分析.

我最近设置了git存储库,根据来自存储库的Push通知,在项目发生变化时向Jenkins发送通知.这会立即构建两个项目,但我只想project构建quick()作业.如果我project-sonar定期移动它,即使没有代码更改也会运行声纳分析,这是浪费的.

我该如何保留?

  • 立即构建project构建
  • 每日构建用于project-sonar构建

Rob*_*anu 1

我已经使用以下方法解决了这个问题:

  1. 所有 jenkins 项目均以其 git 存储库命名(我使用 gitolite )
  2. 我仅激活了基础构建的远程触发构建
  3. 我在 gitolite 中添加了一个post-receive钩子,它的作用类似于

    $CURL --silent --netrc --insecure --connect-timeout 2 "$GIT_REMOTE_TRIGGER_URL/$GL_REPO/build?token=$JENKINS_BUILD_TOKEN" > /dev/null

  4. 安排所有声纳作业每 24 小时轮询一次 SCM