コードが SVN プロジェクトにコミットされるたびに Jenkins ジョブでビルドをトリガーするには、どのプラグインとプラグイン機能を設定する必要がありますか?
標準の SVN プラグインと SVN タグ付けプラグインの両方をインストールしましたが、トリガー構成を可能にする新しい機能が見当たりません。
コードが SVN プロジェクトにコミットされるたびに Jenkins ジョブでビルドをトリガーするには、どのプラグインとプラグイン機能を設定する必要がありますか?
標準の SVN プラグインと SVN タグ付けプラグインの両方をインストールしましたが、トリガー構成を可能にする新しい機能が見当たりません。
これには 2 つの方法があります。
実装が簡単なため、最初は最初のオプションをお勧めします。ビルド プロセスで成熟したら、2 番目のプロセスに切り替えます。
リポジトリをポーリングして、変更が発生したかどうかを確認します。これは、2 つのコミットが同じポーリング間隔内にある場合、コミットを「スキップ」する可能性があります。 ここで行う方法の説明。4 番目のスクリーンショットに注意してください。ここでは、リポジトリのポーリングに基づいてジョブで「ビルド トリガー」を構成します (crontab のような構成を使用)。
ビルドを開始する必要があることを Jenkins に通知する post-commit フックを持つようにリポジトリを構成します。 プラグインの説明 ここ、セクション「ポストコミットフック」
SVN タグ機能はポーリングの一部ではありません。ビルドのスナップショットを作成するために、ソース コードの現在の「先頭」をタグにプロモートすることの一部です。これにより、Jenkins ビルド #32 を SVN タグ /tags/build-32 (または類似のもの) として参照できます。
Jenkins ビルドをトリガーするために、いくつかの bash を備えた Python を使用してツールを作成しました。基本的に、コミットが SVN サーバーにヒットしたときに、コミット後から次の 2 つの値を収集する必要があります。
REPOS="$1"
REV="$2"
次に、「svnlook dirs-changed $1 -r $2」を使用して、コミットされたばかりのパスを取得します。そこから、構築するリポジトリを確認できます。何十万ものプロジェクトがあると想像してください。リポジトリ全体を確認することはできませんよね?
私のスクリプトは GitHub からチェックアウトできます。
post-commit フックを使用できます。
post-commit フック スクリプトをフォルダーに配置し、C:\ ドライブに をhooks
作成して、このフォルダーにファイルを配置します。というファイルに次のコードを追加します。wget_folder
wget.exe
post-commit.bat
SET REPOS=%1
SET REV=%2
FOR /f "tokens=*" %%a IN (
'svnlook uuid %REPOS%'
) DO (
SET UUID=%%a
)
FOR /f "tokens=*" %%b IN (
'svnlook changed --revision %REV% %REPOS%'
) DO (
SET POST=%%b
)
echo %REPOS% ----- 1>&2
echo %REV% -- 1>&2
echo %UUID% --1>&2
echo %POST% --1>&2
C:\wget_folder\wget ^
--header="Content-Type:text/plain" ^
--post-data="%POST%" ^
--output-document="-" ^
--timeout=2 ^
http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%
Test = ジョブの名前
echo
値を確認するために使用されますexit 2
。最後に追加して、問題について知り、コミット後のフック スクリプトが実行されているかどうかを確認することもできます。