我将以下设置激活并正常工作:
project
)project-sonar
)每24小时轮询一次git 两个作业共享相同的git存储库。
这允许我为每个提交构建我的项目,然后每天,只有在项目发生变化时才运行声纳分析。
我最近设置了git存储库,根据Push notifications from repository在项目发生变化时向Jenkins发送通知。这会立即构建两个项目,但我只想构建快速(project
)作业。如果我定期移动project-sonar
,即使没有代码更改也会运行声纳分析,这很浪费。
我如何保留
project
构建project-sonar
build
答案 0 :(得分:3)
我使用jenkins的“运行条件”插件实现了非常类似的东西。 https://wiki.jenkins-ci.org/display/JENKINS/Run+Condition+Plugin
我使声纳工作成为轮询/构建/测试工作的后续工作,条件是每天只运行一次。
答案 1 :(得分:1)
我使用以下方法解决了这个问题:
我在gitolite中添加了一个post-receive
钩子,其功能类似于
$CURL --silent --netrc --insecure --connect-timeout 2 "$GIT_REMOTE_TRIGGER_URL/$GL_REPO/build?token=$JENKINS_BUILD_TOKEN" > /dev/null
计划所有声纳工作每24小时轮询SCM
答案 2 :(得分:0)
我有我的常规项目和第二个名为“每日项目”的项目,每天运行。
“Project”采用名为“RELEASE_TAG”的参数,该参数作为git部分中的分支说明符传递。 git插件还允许在此处指定标记。
当“project”启动时,它会将$ 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,标记它,然后使用标记(指定版本)手动运行“project”。