64

私はjenkinsを使用していますが、svnリポジトリに変更があった場合にMavenゴールを実行したいと思います。現在の構成で写真を添付し​​ました。

5分ごとにリポジトリをチェックするのはおかしいと思います。新たな変更があった場合にのみ実行したいのですが、道が見つかりませんでした。とにかく、それはリポジトリをチェックしていません。私は何が間違っているのですか?

前もって感謝しますここに画像の説明を入力してください

4

3 に答える 3

109

最近のベストプラクティスはH/5 * * * *、であると思います。これは、すべてのジョブが正確に同時に開始されるのを避けるために、ハッシュ係数を使用して5分ごとに実行することを意味します。

于 2015-06-14T22:03:33.580 に答える
78

あなたのcronは正しくないと思います。あなたが説明したことによると、cronスケジュールを次のように変更する必要があるかもしれません

*/5 * * * *

スケジュールに入れると、毎時5時にSCMがポーリングされます。

于 2012-04-12T11:31:53.303 に答える
8

それは古い質問です、私は知っています。しかし、私によれば、それは適切な答えを欠いています。

ここでの実際の/最適なワークフローは、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
于 2018-08-16T21:57:18.150 に答える