我和jenkins一起工作,我希望在svn仓库有变化的时候运行maven目标.我已经附上了我当前配置的图片.我知道每5分钟检查一次仓库是很疯狂的。我想只有当有新的变化时才运行它,但我找不到方法。无论如何,它不是检查仓库。我做错了什么?
ajsxfq5m1#
我相信现在最好的做法是H/5 * * * *,这意味着每5分钟使用一个哈希因子,以避免所有作业在完全相同的时间开始。
H/5 * * * *
nimxete22#
我认为您的cron不正确。根据您的描述,您可能需要将cron计划更改为
*/5 * * * *
现在您在日程表中输入的内容意味着它将在每小时5点过轮询SCM。
bwntbbo33#
我知道这是一个老问题,但据我所知,它缺少正确的答案。这里实际/最佳的工作流程是合并SVN的post-commit钩子,这样它只在实际提交发出后触发Jenkins作业,而不是在其他情况下。这样你就避免了在SCM系统上不必要的轮询。您可能会对以下链接感兴趣:
如果我在公司的SVN服务器上进行设置,我使用下面的脚本作为subversion服务器端的post-commit钩子:
#!/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
3条答案
按热度按时间ajsxfq5m1#
我相信现在最好的做法是
H/5 * * * *
,这意味着每5分钟使用一个哈希因子,以避免所有作业在完全相同的时间开始。nimxete22#
我认为您的cron不正确。根据您的描述,您可能需要将cron计划更改为
现在您在日程表中输入的内容意味着它将在每小时5点过轮询SCM。
bwntbbo33#
我知道这是一个老问题,但据我所知,它缺少正确的答案。
这里实际/最佳的工作流程是合并SVN的post-commit钩子,这样它只在实际提交发出后触发Jenkins作业,而不是在其他情况下。这样你就避免了在SCM系统上不必要的轮询。
您可能会对以下链接感兴趣:
如果我在公司的SVN服务器上进行设置,我使用下面的脚本作为subversion服务器端的post-commit钩子: