GitHubリポジトリのmaster
ブランチを構築するJenkinsの仕事があります。 master
へのコミットをプッシュするとうまくトリガーし、とても満足しています。
また、このリポジトリに他のブランチを構築する単一のJenkinsジョブが欲しいです。つまり(master
ではない)ブランチにコミットをプッシュするたびに、このJenkinsジョブでそのブランチを構築し、そのブランチのみを構築したいと考えています。
GitHubプルリクエストプラグインを使用するには、プルリクエストを作成する必要があり、コミットをmaster
とマージします。プルリクエストを作成することなくこれを実行し、master
とマージせずにコミットのみをビルドしたいと思います。
すべてのブランチをビルドするようにGitプラグインをセットアップすると、マスターにプッシュするたびにすべてのブランチがビルドされます。変更された1つのブランチのみを構築したいと思います。
ジェンキンスでこれを行うことは可能ですか?
私は同じ問題を抱えていたので、実験するためのダミープロジェクトをセットアップして解決策を見つけました。そして、そうであることがわかりました。プッシュされたブランチのみをできます。
短い答えは"Branch Specifier"を使用することです。たとえば、Origin/feature**
です。
GitFlow を使用していて、すべての機能ブランチにfeature/
接頭辞が付いている場合、これが解決策です。
そして、もしあなたが興味があるなら、ここに私がそれを理解した方法があります。
リポジトリの設定から、サービス“ Github plugin”をJenkinsフックhttps://<jenkin server>/github-webhook/
で設定しました。少なくとも私にとって何が起こったかは、何らかの理由で "test"を押した後、送信されるペイロードのメッセージが確認のために変更されなかったことに注意してくださいそれは受け取られた/認められたまたは何か。返事がないかもしれません。混乱しますが、とにかく...
新しいJenkinsジョブを作成し、branch specifierをblankに設定しました= -Jenkinsは自動的に**
に設定します。
機能ブランチfeature/foo
を作成し、それにプッシュしました。
master
ブランチにあります。feature/foo
ブランチでも起動されました。したがって、**
または空白の指定子を使用すると、プラグインは、anyへのプッシュがあるたびに、リポジトリのすべてのブランチでビルドを起動します。
次に、パターンrefs/heads/feature/foo
を試し、別の変更をfeature/foo
ブランチにプッシュしました。
feature/foo
ブランチで実行されました。ちょっと大丈夫ですが、これはあまりにも厳格です。機能ブランチごとに1つのビルドジョブが必要になります。 all機能ブランチの1つのビルドジョブが必要でした。
次に、パターンrefs/heads/feature\*\*
でワイルドカードを試し、変更をfeature/foo
にプッシュしました。
次に、ブランチ指定子refs/heads/feature/\*\*
を試してプッシュしました。
次に、 "Branch Specifier"フィールドのヘルプが「ワイルドカード」セクションでこれを読み取るのを見ました。
構文は
REPOSITORYNAME/BRANCH
の形式です。さらに、BRANCH
は*/BRANCH
の短縮形として認識され、*
はワイルドカードとして認識され、**
は区切り文字を含むワイルドカードとして認識されます/
。したがって、Origin/branches*
はOrigin/branches-foo
と一致しますが、Origin/branches/foo
とは一致しませんが、Origin/branches**
はOrigin/branches-foo
とOrigin/branches/foo
の両方と一致します。
Origin/feature**
を試してみました
Origin/feature/foo
に起動されました。ユーレカ! (refs/
で始まる)参照ではワイルドカードを使用できないようですが、実際のブランチの名前(Origin/
で始まる)はできます )。
次に、ブランチfeature/bar
を作成して、そこにプッシュしました。これだけがビルドされ、他のブランチもビルドされないことを確認するために、feature/
で始まります。
Origin/feature/bar
に起動されました。ほとんどそこに見えた。あと少しテストが必要だった。
次に、Origin/master
に別の変更をプッシュしました
次に、feature/bar
に別の変更をプッシュして、このブランチのみがビルドされることをテストしました。 Origin/master
もプッシュされたという事実にもかかわらず。
feature/bar
に起動されました。は、私にはよく見えますよ。
Jenkinsで構成する複数のブランチのプラグインが表示されます。このメソッドを使用すると、Jenkinsからのブランチのフィードバックを取得できます。
https://wiki.jenkins-ci.org/display/JENKINS/Multi-Branch+Project+Plugin
お役に立てば幸いです。
実際、Jenkins GitHubプラグインページにこの質問への回答があるようです。
@ thatway_3 言及 のように、これはプラグインで可能です。リンク先のMulti-Branch Projectプラグインは非推奨ですが、代わりに Pipeline Multibranch Plugin を使用できます。
そのプラグインをインストールしてから、タイプ「Pipeline Multibranch」の新しいジョブを作成する場合、特定のリポジトリーを追跡するように構成できます。その後、(正しく!)そこからすべてのブランチを構築します。
参照: https://jenkins.io/blog/2015/12/03/pipeline-as-code-with-multibranch-workflows-in-jenkins/
お役に立てれば。