触发一个基于git子模块中的更改的TeamCity构建

Jan*_*zny 8 git teamcity teamcity-8.0

如何设置TeamCity触发器以开始构建git子模块中的更改?

目前,您必须更新子模块提交指针以触发主存储库中的构建,以便TC将在主存储库中注册更改.

更新

问题是子模块应该始终跟踪分支主机.AFAIK这不能通过git本身来实现.我只是希望构建能够克服git限制.

Jan*_*zny 6

这不是一个巧妙的解决方案,但实现了使用子模块的尖端构建项目的目标,并且不需要手动更新子模块。(一个钩子可能就可以了)

使用子模块作为主存储库创建单独的构建配置,并设置命令行构建步骤来克隆 master-repo、拉取/更新子模块并将更新的子模块指针推回主存储库。

rm -r master-repo
git clone git@github.com:xxx/master-repo.git
cd master-repo
git status
git submodule update --init 
git config -f .gitmodules submodule.submodule-repo.branch master
cd submodule-repo
git pull origin master
git status
cd ..
git add submodule-repo
git commit -m "sub module update"
git push origin master
Run Code Online (Sandbox Code Playgroud)

我是 git 新手,所以这可能可以优化。


man*_*lds 1

这是不可能的,因为 TeamCity(和 git)无法知道有更新。存储库中的子模块条目仅指向提交。

它会更新什么?此提交可以有多个分支和提交。只有可以决定将子模块更新到哪里。