7

我有以下设置处于活动状态并且正在工作:

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

两个作业共享同一个 git 存储库。

这允许我为每次提交构建我的项目,然后每天,只有当项目发生变化时,才运行声纳分析。

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

我怎样才能保留

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

?

4

3 回答 3

3

我实现了一些非常类似于您正在使用詹金斯的“运行条件”插件看到的东西。 https://wiki.jenkins-ci.org/display/JENKINS/Run+Condition+Plugin

我将声纳工作作为轮询/构建/测试工作的后续工作,并附有条件,因此它每天只运行一次。

于 2012-08-13T17:01:54.553 回答
1

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

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

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

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

于 2012-08-25T10:52:51.597 回答
0

我有我的常规项目和另一个每天运行的名为“project-daily”的项目。

“Project”采用名为“RELEASE_TAG”的参数,该参数作为 git 部分中的分支说明符传递。git 插件还允许在此处指定标签。

当“项目”启动时,它会将 $COMMIT 保存到一个名为 latest/$PROJECT.$BRANCH 的文件中。($BRANCH 设置为 $RELEASE_TAG,除非 $RELEASE_TAG 是标签,在这种情况下 $BRANCH 设置为“master”。)该文件由“project-daily”读取。

“Project-daily”是一个流水线脚本。它没有存储库。为了节省空间,它运行“git clone --bare ...”,然后运行“git log -n 1 --format=format:%H daily”。它读取“latest/$PROJECT.daily”以获取最新版本(尝试)。如果该提交与“git log”输出不同,则它调用“build job:'project'”,参数“RELEASE_TAG”设置为“daily”。

我们将工作代码推送到日常分支。当需要发布构建时,我们合并到 master,标记它,然后使用标记(指定版本)手动运行“项目”。

于 2018-06-13T17:09:46.847 回答