2012-04-04 49 views
64

Jenkinsジョブでビルドをトリガするために設定するプラグインとプラグインの機能は、SVNプロジェクトにコミットされていますか?標準のSVNプラグインとSVNタグ付けプラグインの両方をインストールしましたが、トリガー設定を可能にする新しい機能は表示されません。 Jenkins CI:SVNコミットでビルドをトリガーする方法

は私が原因実装の容易さに、最初は最初のオプションをお勧めします。

+0

が重複する可能性のhttp ://stackoverflow.com/questions/4792466/trigger-hudson-build-when-svn-commit) – highlycaffeinated

答えて

71

はこれについて行くには2つの方法があります。ビルドプロセスで成熟したら、2番目のビルドに切り替えます。

  1. 変更が発生したかどうかを確認するためにリポジトリをポーリングします。同じポーリング間隔内に2つのコミットが入った場合、コミットを「スキップ」する可能性があります。 Description of how to do so here、リポジトリのポーリングに基づいてジョブを「ビルドトリガ」(crontabのような設定で)に設定する4番目のスクリーンショットに注目してください。

  2. ビルドを開始する必要があることをJenkinsに通知するポストコミットフックを持つようにリポジトリを設定します。セクション「ポストコミットフック」でDescription of how to do so here

SVNタグ機能は、ポーリングの一部ではない、それはスナップショットし、タグのソースコードの現在の「頭」を推進の一環でありますビルド。これにより、Jenkinsのbuid#32をSVNのtag/tags/build-32(または同様のもの)として参照できます。

+0

ポストコミットフックロック。応答時間が短縮され、CIシステムでは(数量的に)何百もの変更ログ要求が発生しても、ソースリポジトリは壊れません。 – EricMinick

+4

@EricMinick短期間で多くの小さなコミットが得られる場合は、素晴らしいことですが、時にはCIサーバーを溶かすことがあります。それはコースのすべての馬であり、あなたの開発プロセスがどのように機能しているかを分析することなく、どの方法が好都合であるかを知るのは難しいです。 –

+0

@EdwinBuck:Jenkinsが選択的なコミットだけをビルドするように設定する方法があるかどうか知っていますか?私は説明します、私はtortoiseSVNと、リポジトリをポーリングし続けるJenkinsプロジェクトを持っています。今私が作るコミットがジェンキンスを誘発してはならないことを望むなら、それを行う方法はありますか? –

0

私はいくつかのbashを使ってpythonを使ってツールを作成して、ジェンキンスをビルドしました。基本的にはヒットSVNサーバにコミットする際コミット後からこれらの二つの値を収集する必要があります。

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

を次にあなたがsvnlookの$ 1 -R $ 2 dirsには、変更さ」を使用しますただコミットしたパスを取得する。それから、ビルドするリポジトリを確認できます。あなたが何百ものプロジェクトを持っていると想像してください。リポジトリ全体をチェックすることはできませんか?

あなたは私だけのpythonを学び、今でもそれを使用しているので、私はこのスクリプトを書いたgithub

から私のスクリプトをチェックアウトすることができます。私はそれを改善しようと計画していましたが、新しいプロジェクトや物事は常に私を抱きしめています。誰もがPythonの良い知識を持っている間違いなく良い組み込みツールがあります。誰かが分かち合うことができれば、それを持っていることを愛するでしょ

-1

ポストコミットフックを使用できます。

hooksフォルダにコミット後のスクリプトを入れて、C:\ドライブにwget_folderを作成し、wget.exeファイルをこのフォルダに入れます。 というファイルに次のコードを追加し、問題について知っている仕事

echoのテスト=名前が値を確認するために使用されていて、また最後にexit 2を追加することができます

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%  

post-commit.batとコミット後のフックスクリプトが実行中であるかどうか。

0

ビルドをトリガーするにはSVNではなくGitHubをお勧めしますか? 実際に私はSVNを知っているだけですが、なぜ多くの人がGitHubを代わりに使うのかと不思議です。

0

サブバージョンプラグインのプラグインは1つだけ必要です。単に その後 、jenkins-> job_name-へ行く>トリガーセクションビルド - > (I)トリガ(すなわち、スクリプトから)リモートで 認証トークンを構築:-Token_name

は、その後の火災の後、その後のsvnサーバーのhooksディレクトリに移動(c)chown -R www-data:www-data post-commit (d)vi post-commitコマンドを使用して、コミット後のコミットメッセージを表示します。 - (a)cp post-commit.tmplポストコミット (b)chmod 777ポストコミット コミット 注:すべての行をコメントにする必要があります 以下の行を最後に追加 synta X(Linuxユーザのための): - (Windowsユーザーのための)は/ usr/binに/ http://username:[email protected]:8081/job/job_name/build?token=Token_name

構文カール: - C:/ curl_for_win /カールhttp://username:[email protected]:8081/job/job_name/build?token=Token_name

[SVNコミットトリガーハドソンのビルド](の
関連する問題