多存储库项目的CI

时间:2019-07-31 16:46:20

标签: travis-ci gitlab-ci heroku-ci

我当前的项目包含三个存储库。有一个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子模块来完成此操作。

我该如何处理?

1 个答案:

答案 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管道。