我正在使用Jenkins,希望在svn存储库发生更改时运行Maven目标。 我已经附上了我的当前配置图片。
我知道每5分钟检查一次存储库是疯狂的。 我想仅在有新更改时运行它,但我找不到方法。 无论如何,它没有检查存储库。 我做错了什么?
我正在使用Jenkins,希望在svn存储库发生更改时运行Maven目标。 我已经附上了我的当前配置图片。
我知道每5分钟检查一次存储库是疯狂的。 我想仅在有新更改时运行它,但我找不到方法。 无论如何,它没有检查存储库。 我做错了什么?
我认为现在最佳实践是H/5 * * * *
,这意味着每5分钟运行一次任务,并使用哈希因子避免所有作业同时开始。
我认为你的定时任务设置不正确。根据你所描述的情况,你可能需要更改定时任务的计划表。
*/5 * * * *
现在你在日程表中设置的意思是每小时的5分会轮询SCM。
services.msc
,查找jenkins项目,右键单击,属性-> 登录。 - Edgar Villegas Alvarado这是一个老问题,我知道。但是,根据我的经验,它缺乏适当的答案。
实际/最佳的工作流程应该是将SVN的后提交挂钩合并,以便仅在实际提交时触发Jenkins作业,而不是在其他任何情况下触发。这样可以避免对SCM系统进行不必要的轮询。
您可能会发现以下链接有趣:
对于我在公司的SVN服务器上设置的情况,我使用以下(已审查的)脚本作为提交后挂钩在子版本服务器端:
#!/bin/sh
# POST-COMMIT HOOK
REPOS="$1"
REV="$2"
#TXN_NAME="$3"
LOGFILE=/var/log/xxx/svn/xxx.post-commit.log
MSG=$(svnlook pg --revprop $REPOS svn:log -r$REV)
JENK="http://jenkins.xxx.com:8080/job/xxx/job/xxx/buildWithParameters?token=xxx&username=xxx&cause=xxx+r$REV"
JENKtest="http://jenkins.xxx.com:8080/view/all/job/xxx/job/xxxx/buildWithParameters?token=xxx&username=xxx&cause=xxx+r$REV"
echo post-commit $* >> $LOGFILE 2>&1
# trigger Jenkins job - xxx
svnlook changed $REPOS -r $REV | cut -d' ' -f4 | grep -qP "branches/xxx/xxx/Source"
if test 0 -eq $? ; then
echo $(date) - $REPOS - $REV: >> $LOGFILE
svnlook changed $REPOS -r $REV | cut -d' ' -f4 | grep -P "branches/xxx/xxx/Source" >> $LOGFILE 2>&1
echo logmsg: $MSG >> $LOGFILE 2>&1
echo curl -qs $JENK >> $LOGFILE 2>&1
curl -qs $JENK >> $LOGFILE 2>&1
echo -------- >> $LOGFILE
fi
# trigger Jenkins job - xxxx
svnlook changed $REPOS -r $REV | cut -d' ' -f4 | grep -qP "branches/xxx_TEST"
if test 0 -eq $? ; then
echo $(date) - $REPOS - $REV: >> $LOGFILE
svnlook changed $REPOS -r $REV | cut -d' ' -f4 | grep -P "branches/xxx_TEST" >> $LOGFILE 2>&1
echo logmsg: $MSG >> $LOGFILE 2>&1
echo curl -qs $JENKtest >> $LOGFILE 2>&1
curl -qs $JENKtest >> $LOGFILE 2>&1
echo -------- >> $LOGFILE
fi
exit 0