我当前的项目包含三个存储库。有一个Java(Spring Boot)应用程序和两个Angular Web客户端。
目前,我正在运行一个deploy.sh
脚本,该脚本将克隆每个存储库,然后部署整个程序。
# Clone all projects
git clone ..
git clone ..
git clone ..
# Build (there is a pom.xml which depends on the cloned projects)
mvn clean package
# Deploy
heroku deploy:jar server/target/server-*.jar --app $HEROKU_APP -v
不是很好,我知道。
因此,我想切换到CI管道,我认为travis-ci或gitlab-ci可能是一些不错的选择。
我的问题是:在这一点上,如果任何master
分支上都有更新,我不知道如何(或是否)可以构建整个东西。
也许可以以仅跟踪每个存储库的方式配置管道,或者可以使用git子模块来完成此操作。
我该如何处理?
答案 0 :(得分:0)
如果需要将所有项目一起构建和部署,那么您将拥有一个庞大的整体。在这种情况下,我建议您对所有项目使用单个存储库,并使用单个管道。这样,您就无需克隆任何东西。
但是,如果Java应用程序和angular客户端是可以独立构建和部署的微服务,则将它们放在单独的存储库中,并为它们中的每一个创建管道。尽量不要耦合不同服务的发布过程(管道),因为稍后您会后悔的。 每个服务应分别构建,测试和部署。
如果您决定购买多回购巨石(请不要这么做),可以考虑 Gitlab CI Multi-project Pipelines
工作流程示例:
存储库1(Java),存储库2(Angular 1),存储库3(Angular 2)
回购1: 一经掌握,就克隆了仓库2和仓库3,进行构建,测试和部署。
回购2: 推送至主节点时,触发Repo 1管道。
回购3: 推送至主节点时,触发Repo 1管道。