1

我有两个 Git 存储库:A(公共)和 B(私有),其中 B 是 A 的一个分支,B 需要定期与 A 同步。我还添加了 repo A 作为 repo B 的远程上游,如下所示:

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

我创建了一个 Jenkins 作业,当 repo B 中有提交时触发。但是,我也需要这个作业在 repo A 中有提交时触发。然后将这些更改合并到 repo B 并构建。

编辑:我尝试使用Jenkins Multiple SCMs 插件。我添加了两个 Git 存储库并为它们提供了不同的本地文件夹,如插件页面中所述。现在 Jenkins 工作正确地轮询了存储库和触发器本身,但我试图避免在我的硬盘上保留两个单独的存储库,因为它们太大了,我打算扩展这种方法。

4

1 回答 1

0

您可以只考虑一项会被触发的工作:

  • 通过新提交B(通常的 Jenkins 投票)
  • 通过新的提交AA向 Jenkins 推送通知),带有一个钩子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 回答