私はjenkinsを使用していますが、svnリポジトリに変更があった場合にMavenゴールを実行したいと思います。現在の構成で写真を添付しました。
5分ごとにリポジトリをチェックするのはおかしいと思います。新たな変更があった場合にのみ実行したいのですが、道が見つかりませんでした。とにかく、それはリポジトリをチェックしていません。私は何が間違っているのですか?
前もって感謝します
私はjenkinsを使用していますが、svnリポジトリに変更があった場合にMavenゴールを実行したいと思います。現在の構成で写真を添付しました。
5分ごとにリポジトリをチェックするのはおかしいと思います。新たな変更があった場合にのみ実行したいのですが、道が見つかりませんでした。とにかく、それはリポジトリをチェックしていません。私は何が間違っているのですか?
前もって感謝します
最近のベストプラクティスはH/5 * * * *
、であると思います。これは、すべてのジョブが正確に同時に開始されるのを避けるために、ハッシュ係数を使用して5分ごとに実行することを意味します。
あなたのcronは正しくないと思います。あなたが説明したことによると、cronスケジュールを次のように変更する必要があるかもしれません
*/5 * * * *
スケジュールに入れると、毎時5時にSCMがポーリングされます。
それは古い質問です、私は知っています。しかし、私によれば、それは適切な答えを欠いています。
ここでの実際の/最適なワークフローは、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