3

マスター、br2、および br3 の 3 つの Git ブランチがあります。私は 3 つの Jenkins ジョブを持っています。それぞれが同じリポジトリを複製しますが、異なるブランチをチェックアウトします。私の理解では、受信後フックで以下のコマンド ( http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-hook/ ) を使用することです。プッシュが行われたブランチのジョブを開始するように Jenkins をトリガーする必要があります。

curl http://smfosbuild:8080/git/notifyCommit?url=git@vfilvgit2:scmtest.git

br2 に変更を加えてプッシュすると、正しい Jenkins ジョブが開始されます。ただし、マスターまたは br3 で行われた変更をプッシュしても、関連ジョブは開始されません。

また、電子メール トリガーをアクティブにして、正しいブランチを示すすべてのプッシュの電子メールを受け取ります。したがって、post-receive フックは、変更されたブランチに関する正しい情報を取得しています。上記の私のコマンドが間違っているという考えはありますか、それともJenkinsの設定に欠けている設定がありますか?

4

2 に答える 2

1

その問題を調査するには、GIT と Jenkins のインストールを調べる必要があります。しかし、当面はより簡単な方法を提案できます。

プロジェクト構成では、通常の HTTP 呼び出し (ジョブ ->構成->ビルド トリガー->ビルドをリモートでトリガー (例: スクリプトから) )を介して任意のビルドをリモートでトリガーするように設定できます。これはリポジトリ情報を確認するのではなく、何があってもビルドを実行するだけです。あなたが説明したアプローチは私たちにも多くの問題を引き起こしていたので、これは実際に役に立ちます. したがって、これをpost-receiveフックに入れると、次のようにジョブ名を含む URL を呼び出すだけです。

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

ブランチ名はもちろんブランチの名前です。

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

必要に応じて、フックのソース コードを提供できますが、非常に簡単に記述できます。これは、Git ソースで利用可能なpost-receive-email にpost-receive基づいて作成されています。

于 2012-05-10T22:30:26.163 に答える
0

Kohsuke のブログ投稿で説明されている通知方法を使用する場合でも、ジョブに対してポーリングを構成する必要があることをご存知ですか? ポーリング間隔は、「@daily」のように長くすることができますが、通知は即時のポーリングをトリガーするためだけに使用されるため、そこにある必要があります。

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

于 2012-05-12T18:51:52.043 に答える