6

単一のリポジトリでフックを指定する方法はありますか?

これで、「/etc/mercurial/hgrc」ファイルでフックを指定しましたが、毎回ビルドが 2 回行われ、各リポジトリのコミットごとにビルドされます。

そのため、リポジトリごとにビルドを指定したいと考えています。

これがフックの実装方法です。

[hooks]
changegroup = curl --silent http://jenkins:8080/job/ourProject/build

Ubuntuサーバー上にあります。

4

3 に答える 3

2

あなたはそれを確認する必要があります

  1. Jenkins プロジェクトがポーリングしない

  2. Mercurial フックに適切な notifyCommit URL を使用します: https://wiki.jenkins-ci.org/display/JENKINS/Mercurial+Plugin

于 2013-10-11T13:35:54.573 に答える
0

わかりました、探していたものを見つけました (私は報奨金です。私のケースは特定のブランチを持つ Mercurial です)。

main/origin リポジトリに、目的のビルド スクリプトを含むフックを配置します。Pregroupchange入ってくる変更を維持することです。メインリポジトリにロードコードがインストールされており、それ自体に独自のフックがあります。

このようにして、Jenkins を引き続きトリガーし、rhodecode プッシュ通知などのトリガーの後に変更を加えます。

[hooks]
pregroupchange = /path/to/script.extention

スクリプトに、Jenkins のトリガーでもある目的のアクションを配置します。Jenkins:Job:Configure:Build Triggers:checkboxリモートでトリガービルドを有効にすることを忘れないでください+ここにあなたのdesired_token(私の場合:Mercurial)を入れてください。

Mercurial では特定のブランチだけをトリガーすることはできないため、このようにしてブランチ名を見つけました。また、リモート スクリプトからトリガーするには、Jenkins で匿名全体の読み取りアクセス許可を付与するか、資格情報を持つ特定のユーザーを作成してトリガー URL に配置する必要があります。

バッシュの例:

#!/bin/bash
BRANCH_NAME=`hg tip --template "{branch}"`
if [ $BRANCH_NAME = "branch_name" ]; then
   curl --silent http://jenkins_domain:port/path/to/job?token=desired_token
fi

元の質問の場合:

このようにして、目的のブランチに対して 1 つのビルドのみを実行します。フックは、複数のクローンおよび複数の開発者と作業する場合に備えて、メイン リポジトリのみを対象としています。ローカル フックがあるかもしれませんが、開発者ごとにローカルから Jenkins をトリガーしないでください。プッシュ (commit、incoming、および groupchange) が来たときに、メイン リポジトリからのみ Jenkins をトリガーします。ローカル フックは、電子メール、ログ、構成などの他のもの用です。

于 2015-03-13T07:27:25.883 に答える