【问题标题】:Should I create a Jenkins job for each microservice?我应该为每个微服务创建一个 Jenkins 作业吗?
【发布时间】:2023-04-05 04:30:01
【问题描述】:
我有 4 个微服务,它们都构建在相同的技术堆栈(Java Dropwizard、MySQL)上,我正在尝试为它们创建 CI/CD 管道,但这里的问题是:
为每个微服务设置单独的 Jenkins 作业是个好主意吗?或者最好只为所有微服务提供一个参数化的作业?
我需要在 CI/CD 中运行的是:
- 干净的构建
- 单元测试
- 集成测试
- 负载测试
- 构建 docker 容器和镜像
- 发布
- 推送工件
- 部署
【问题讨论】:
标签:
jenkins
continuous-integration
continuous-deployment
continuous-delivery
【解决方案1】:
为每个项目创建一个作业并使用MultiJob 插件将这些作业添加到构建管道是一个好方法。然后就可以触发父作业启动流水线了。
【解决方案2】:
我会使用声明式管道,您可以在其中在存储库的本地 Jenkinsfile 中定义逻辑。
使用 Jenkins,您可以拥有一个“主”Jenkinsfile 和/或您可以通过调用上游项目来继承的项目。这将使您能够有效地分享您的说明并减少重复。
最终,由于 Jenkins 的工作方式,您必须为每个存储库/用途创建一个单独的项目,或者(推荐)拥有一个“主”项目,让您传递项目名称、git repo 等信息url,具体的应用变量和值等等。