1

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

我该如何处理?

4

1 回答 1

0

如果您需要将所有项目一起构建和部署,那么您就有了一个巨大的旧单体。在这种情况下,我建议您为所有项目使用一个存储库并拥有一个管道。这样你就不需要克隆任何东西。

但是,如果 Java 应用程序和 Angular 客户端是可以独立构建和部署的微服务,请将它们放在单独的存储库中,并为它们中的每一个创建一个管道。尽量不要耦合不同服务的发布过程(管道),因为你以后会后悔的。每个服务都应该单独构建、测试和部署。

如果您决定拥有一个多仓库单体(请不要),您可以查看 Gitlab CI 多项目管道

示例工作流程:

回购 1 (Java)、回购 2 (Angular 1)、回购 3 (Angular 2)

Repo 1:在推送到 master 时,克隆 Repo 2 和 Repo 3,构建、测试、部署。

Repo 2:推送到 master 时,触发 Repo 1 管道。

Repo 3:推送到 master 时,触发 Repo 1 管道。

于 2019-08-01T11:21:29.140 回答