2017-11-07 9 views
0

GITにコードベースがあります。コードベースでは5つのファイルには、すなわち特定のファイルのみが変更された場合、トリガージェンキンが構築されます

  • はFile1
  • File2の
  • FILE3
  • FILE4
  • File5

私はジェンキンスさんは、ファイル2がある場合にのみ構築トリガーするがありますビルドがポストされると、コードベース全体が引き出されるはずです。

ポーリングSCMを使ってみましたが、リポジトリ内のファイルが変更された場合にビルドが起動されるという問題がありました。ファイル2が変更された場合にのみトリガします。

可能ですか?

+0

異なるブランチがある場合は、扱いが簡単だと思います。次に、gitフックで作業することができます。https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks –

+0

私は2つのブランチ、マスター、開発者を持っています....私はソースコードを設定しましたそれはdevブランチだけをプルするような管理なのですが、ファイルが変更された場合にはjenkinsビルドをセットアップしたいと思っています。私はフックを変更するためのアクセス権がないかもしれないことを恐れています....他の回避策がありますか? –

+0

@ Philj0あなたの提案は私のVCSの解釈と矛盾します。異なる支店は長期的に異なるデータを保管するためのものではありません。 – StephenKing

答えて

0

ここで私はそれをやるでしょう。

  1. Trigger builds remotelyにJenkinsジョブを設定します。

これにより、JENKINS_URL/job/MYJOB/build?token=TOKEN_NAMEという形式のビルドトリガーURLが有効になります。自分でトークン名を指定する必要があります。

  1. あなたのレポにgit post-receive hookを設定して、そのトリガーを呼び出します。

フックのスクリプトは、通常.git/hooks/post-receiveです。ポスト受信フックは、プロセス全体が完了した後に実行され、他のサービスの更新やユーザーへの通知に使用できます。

ポスト受信フックは、その引数をstdinから<oldrev> <newrev> <refname>の形式で取得します。

新しいHEADコミットからファイルリストを取得し、File2が含まれている場合は、次の手順に進むことができます。このような何か(テストしていませんが):あなたはジェンキンスでGitのチェックアウトを設定するとき

#!/bin/bash 
while read oldrev newrev refname 
do 
    # list of changed files for a commit 
    filelist=$(git diff-tree --no-commit-id --name-only -r $newrev) 
    if [[ $filelist == *"File2"* ]]; then 
     # call the URL according to your build trigger config 
    fi 
done 

More details on git hooks.

0

、追加の動作を追加するためのボタンがあります。これらのオプションの1つはPolling ignores commits in certain pathsです。私は実際にそれを使用していないが、これはあなたが探していることを行うだろうと私の理解です。包含と除外のオプションがあります。あなたはインクルードを使うだけで、私は信じています。

+0

私は何らかの理由でこれが私のために働いているとは思っていません。 –

関連する問題