我相信这些天的最佳实践是 H/5 * * * * ,这意味着每5分钟有一个散列因子,以避免所有工作在同一时间开始。
H/5 * * * *
我知道这是个老问题。但是,根据我的说法,它缺少正确的答案。
这里的实际/最佳工作流程是合并SVN的提交后挂钩,以便在仅发出实际提交后触发Jenkins作业,而不是在任何其他情况下。这样可以避免SCM系统上不必要的轮询。
您可能会发现以下链接很有趣:
如果我在公司的SVN服务器中进行设置,我会使用以下(审查)脚本作为subversion服务器端的提交后挂钩:
#!/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