web-dev-qa-db-ja.com

Jenkins CI:SVNコミットでビルドをトリガーする方法

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

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

76
IAmYourFaja

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

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

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

  2. ビルドを開始する必要があることをJenkinsに通知するコミット後フックを持つようにリポジトリを設定します。 ここで行う方法の説明 、「コミット後のフック」セクション

SVNタグ機能はポーリングの一部ではなく、ソースコードの現在の「ヘッド」をタグに昇格させ、ビルドのスナップショットを作成する機能の一部です。これにより、Jenkins buid#32をSVNタグ/ tags/build-32(または同様のもの)として参照できます。

84
Edwin Buck

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

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

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

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

1
Phan Dolphy

Subversionプラグインであるプラグインを1つだけ必要とする必要があります。

次に、単純にJenkins→job_name→Build Triggerセクション→(i)リモートでのトリガーのトリガー(つまり、スクリプトから)認証トークン:Token_nameに移動します

SVNサーバーのhooksディレクトリに移動し、起動後に以下のコマンドを実行します。

  1. cp post-commit.tmpl post-commit
  2. chmod 777 post-commit
  3. chown -R www-data:www-data post-commit
  4. vi post-commit

    注:すべての行をコメント化する必要があります最後に以下の行を追加します

構文(Linuxユーザーの場合):

/usr/bin/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name

構文(Windowsユーザーの場合):

C:/curl_for_win/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name
1
Hemin Patel