79

コードが SVN プロジェクトにコミットされるたびに Jenkins ジョブでビルドをトリガーするには、どのプラグインとプラグイン機能を設定する必要がありますか?

標準の SVN プラグインと SVN タグ付けプラグインの両方をインストールしましたが、トリガー構成を可能にする新しい機能が見当たりません。

4

4 に答える 4

86

これには 2 つの方法があります。

実装が簡単なため、最初は最初のオプションをお勧めします。ビルド プロセスで成熟したら、2 番目のプロセスに切り替えます。

  1. リポジトリをポーリングして、変更が発生したかどうかを確認します。これは、2 つのコミットが同じポーリング間隔内にある場合、コミットを「スキップ」する可能性があります。 ここで行う方法の説明。4 番目のスクリーンショットに注意してください。ここでは、リポジトリのポーリングに基づいてジョブで「ビルド トリガー」を構成します (crontab のような構成を使用)。

  2. ビルドを開始する必要があることを Jenkins に通知する post-commit フックを持つようにリポジトリを構成します。 プラグインの説明 ここ、セクション「ポストコミットフック」

SVN タグ機能はポーリングの一部ではありません。ビルドのスナップショットを作成するために、ソース コードの現在の「先頭」をタグにプロモートすることの一部です。これにより、Jenkins ビルド #32 を SVN タグ /tags/build-32 (または類似のもの) として参照できます。

于 2012-04-04T15:32:48.850 に答える
1

Jenkins ビルドをトリガーするために、いくつかの bash を備えた Python を使用してツールを作成しました。基本的に、コミットが SVN サーバーにヒットしたときに、コミット後から次の 2 つの値を収集する必要があります。

REPOS="$1"
REV="$2"

次に、「svnlook dirs-changed $1 -r $2」を使用して、コミットされたばかりのパスを取得します。そこから、構築するリポジトリを確認できます。何十万ものプロジェクトがあると想像してください。リポジトリ全体を確認することはできませんよね?

私のスクリプトは GitHub からチェックアウトできます。

于 2015-08-19T14:50:44.850 に答える
-1

post-commit フックを使用できます。

post-commit フック スクリプトをフォルダーに配置し、C:\ ドライブに をhooks作成して、このフォルダーにファイルを配置します。というファイルに次のコードを追加します。wget_folderwget.exepost-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。最後に追加して、問題について知り、コミット後のフック スクリプトが実行されているかどうかを確認することもできます。

于 2016-04-01T11:56:04.207 に答える