Monorepo在GitLab - Java/Spring:boot/MVN - CI/CD问题-如何按顺序运行作业.&



我是DevOps的学生,我有一个项目要运行,我卡住了一些东西,我希望我能在你的帮助下解决它。

在我们的项目中,我们使用Java monorepo,这意味着我们在一个存储库中有多个服务,每个服务在自己的目录中,总共六个。

我有一个主要的CI/CD场景文件。gitlab- CI。
/
.gitlab-ci.yml
/EurecaServer/.gitlab-ci.yml
/ApiGateway/.gitlab-ci.yml
/UserService/.gitlab-ci.yml
/DepositService/.gitlab-ci.yml
/CreditService/.gitlab-ci.yml
/InfoService/.gitlab-ci.yml

在根场景文件。gitlab-ci。我使用'include'来收集所有微服务。gitlab-ci。yml文件。

stages:
- docker-compose-start
- test
- build
- deploy
include:
- EurekaServer/.gitlab-ci.yml
- ApiGateway/.gitlab-ci.yml
- UserService/.gitlab-ci.yml
- DepositService/.gitlab-ci.yml
- CreditService/.gitlab-ci.yml
- InfoService/.gitlab-ci.yml
docker-compose-start:
stage: docker-compose-start
tags:
- shell-runner-1
script:
- docker-compose -f docker-compose.yml up --force-recreate -d

在这些微服务场景文件中,我使用"需求"来按顺序执行阶段。首先我有一个测试阶段,然后在最后构建和部署。

当管道启动时(从根目录.gitlab-ci.yml),每个微服务场景随机运行,在构建和部署的某些阶段会失败。

是否有可能使分离的微服务场景文件。gitlab-ci。Yml以特定的顺序运行?第一- EurecaServer,第二- apiggateway,等等

gitlab pipeline <——图片在这里,对不起,信誉不够。

我的同学建议我尝试做一个工作来构建所有六个微服务,另一个工作来部署所有的ms,但我不太确定这是否是正确的方式,因为我想看到每个微服务的工作,特别是使故障排除更有用。

由于needs已经用于使作业遵循测试,构建,然后部署的顺序,因此不需要阶段。

相反,stages可以用来指定运行微服务的顺序,如下所示:

stages:
- docker-compose-start
- EurekaServer
- ApiGateway

作业可以包括stage:ApiGateway等阶段。