如何在git子模块中提交触发持续集成的构建?

End*_*nbo 8 git continuous-integration travis-ci

我正在研究项目A,A依赖于快速开发的项目B(它的主分支).

因此,B是A的子模块,每次我建A,B也重建.此外,每次B有一个新的提交,我需要构建B,然后重新构建A.(幸运的是,项目足够小,所以编译时间并不重要).

现在,这就是重点.当项目A或B中有新的提交时,我想在Travis CI或其他持续集成服务中触发新的构建.

我刚试过Github&Travis CI.项目B中的提交不会触发项目A中的构建.是否有一种简单的方法来运行这种持续集成?

Von*_*onC 7

项目B中的提交不会触发项目A中的构建

考虑到B不知道A存在,这是预期的.

您需要通过以下操作记录项目A 的新B状态(新gitlink,索引中的特殊条目):

cd /path/to/projectA
git submodule update --remote
git add .
git commit -m "Record new B SHA1 gitlink"
git push
Run Code Online (Sandbox Code Playgroud)

git submodule update --remote将子模块B更新.gitmodules为B文件中记录的分支的最新提交.
请参阅" git submodule tracking latest "和" Git子模块:指定分支/标记 "

然后将为A触发新的Travis构建.

如果你想自动化上面描述的序列,你需要一个用于projectB 的webhook(GitHub)(或BitBucket),以及一个本地监听器,它在repo B上的push事件中将触发前面提到的命令在本地repo中项目A.