1

A (パブリック) と B (プライベート) の 2 つの Git リポジトリがあります。ここで、B は A のフォークであり、B は A と定期的に同期する必要があります。また、次のようにレポ B のリモート アップストリームになるようにレポ A を追加しました。

cd <local_folder_of_repo_B>
git remote add upstream <URL_of_repo_A>

次のように、手動で A から B に変更をマージできることを知っています。

cd <local_folder_of_repo_B>
git fetch upstream
git merge upstream/master
git push origin master

レポ B にコミットがあるときにトリガーされる Jenkins ジョブを作成しました。ただし、レポ A にコミットがあるときにもこのジョブをトリガーする必要があります。次に、それらの変更をレポ B にマージしてビルドします。

編集: Jenkins Multiple SCMs pluginを使用してみました。プラグイン ページで説明されているように、2 つの Git リポジトリを追加し、それらに異なるローカル フォルダーを提供しました。現在、Jenkins ジョブはリポジトリとトリガーの両方を正しくポーリングしますが、ハードディスクに 2 つの別々のリポジトリを保持する必要がないようにしようとしています。

4

1 に答える 1

0

トリガーされるジョブは 1 つだけと考えることができます。

  • 新しいコミットによるB(通常の Jenkins ポーリング)
  • での新しいコミットA( AJenkins への通知のプッシュ) により、次のようなAフックをオンにします。

フックの更新A:

REPOSITORY_BASENAME=$(basename "$PWD")
curl http://jenkins.local:8080/git/notifyCommit?url=ssh://git@git.local/$REPOSITORY_BASENAME

いずれにせよ、念のため、ジョブは常にA( upstream) からフェッチを開始し、 にマージupstream/mastermasterます。

于 2013-08-16T12:44:30.537 に答える