2012-05-10 24 views
3

私は3つのGitブランチ、マスター、br2、br3を持っています。私は3つのジェンキンスの仕事を持っています。それぞれが同じリポジトリをクローンしますが、別のブランチをチェックアウトします。私の理解は、ポスト受信フックの下のコマンド(http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-hook/)でプッシュが行われたブランチに対してジョブを開始するようにJenkinsをトリガーするはずです。Git push:ブランチの変更が必ずしもJenkinsを起動させるとは限りません

カールhttp://smfosbuild:8080/git/[email protected]:scmtest.git

変更がBR2で行われ、プッシュ、正しいジェンキンスジョブが開始されます。しかし、マスターやbr3に対して行われた変更をプッシュすると、関連するジョブが開始されません。

私はまた、電子メールトリガをアクティブにして、正しいブランチを示すすべてのプッシュについて電子メールを受け取ります。したがって、ポスト受信フックは、変更されたブランチについての正しい情報を取得しています。すべてのアイデアは上記の私のコマンドが間違っているか、Jenkinsの設定にいくつかの設定がありますか?

答えて

1

この問題を調査するには、GITとJenkinsのインストールを調べなければなりません。 >設定 - - >- >ビルドをトリガしますが、通常のHTTP呼び出し(仕事を経由してリモートでトリガされる任意のビルドを設定することができ、プロジェクトの設定では

:しかし、私はその間に簡単に道を提案することができますリモートでビルドをトリガー(例えば、スクリプトから))。これはリポジトリ情報を検証するのではなく、何があってもビルドを実行するだけです。あなたが説明したアプローチが私たちにも多くの問題を引き起こしていたので、これは実際に役立ちます。 ので、post-receiveフックで、このいずれかをアップした私たちはそのようなことでジョブ名とURLを呼んでいる:

JENKINS_URL/job/Our$20Project%20-%20${BRANCH_NAME}/build?token=TOKEN_NAME 

支店名は明らかに、ブランチの名前です。

その後、ビルドを引き継いだ後、すべてのブランチに対して1つのプロジェクトだけを使用して、ブランチ名をパラメータとして渡すように変更しました。ブランチはビルド名に追加されます(これ以上の数字は使用していません)、はるかに簡単で柔軟なソリューションです。しかし、それは誰もスイートではありません。

post-receiveフックのソースコードを提供したいと思いますが、書くのはとても簡単です.Gitソースで入手できるpost-receive-emailに基づいて作成しました。

+0

ありがとうございました。私はあなたが暫定的な解決策として提案したことをしました。ポスト受信フックからブランチ名を取得し、httpコールを作成する独自のスクリプトを呼び出します。これは素晴らしいですが、スケーラビリティはありません。それはJenkinsの命名規則を強制します - おそらく悪いことではありません。また、私は30以上のレポを持っていて、それぞれがジェンキンスの仕事の名前の根で微調整する必要があります。 Jenkinsの職名を変更すると、名前の変更が完了するまでトリガーが掛かります。だから、非常に良い提案ですが、将来のメンテナンスのために推奨されるコマンドを手に入れたいと思っています。 – Scot

+0

本当に申し訳ありませんが、Jenkinsの設定とログファイルを調べることなく、この問題を解決することは本当に難しいでしょう。ご希望の場合は、電子メールでこれを切り替えることができますので、さらにお手伝いさせていただきます。 –

0

Kohsukeのブログ記事に記載されている通知方法を使用しても、ジョブのポーリングが設定されている必要があります。ポーリング間隔は「@daily」のように長くなる可能性がありますが、ただちにポーリングを開始するために通知が使用されるため、ポーリング間隔は「@daily」のように長くなる可能性があります。

また、ジョブでgitリポジトリ "git @ vfilvgit2:scmtest.git"を使用する必要があります。 ssh://[email protected]/scmtest.gitを使用していないことを再度確認してください。

+0

ありがとうございます、私は空のスケジュールで設定されたポーリングを持っています - 私はJenkinsのブログでこれは大丈夫です。 私は二重チェックして、私はgitリポジトリを使用していますが、ssh://ではありません。 – Scot

関連する問題