![]()
Zadig on Github / Zadig on Gitee
阅读原文 / 加入 Zadig 技术交流群
大家对 CI/CD 的概念并不陌生,但真实世界的 CI/CD 绝不是一段代码做「构建->部署->发布」那么简单,大部分情况下一个产品是由若干个微服务组成的,而微服务之间互相有依赖,不同角色基于不同测试环境进行协作。这里给大家介绍一个典型的微服务架构项目,如何用 Zadig 实现全流程自动化、持续交付。该项目包含 Python, Redis, Postgres, Node.js, and .Net 等前后端、数据库、中间件、相对典型的微服务应用程序组合。
大家对 CI/CD 的概念并不陌生,但真实世界的 CI/CD 绝不是一段代码做「构建->部署->发布」那么简单,大部分情况下一个产品是由若干个微服务组成的,而
微服务之间互相有依赖,不
准备工作
本案例所用代码及配置 fork 自 GitHub Zadig 仓库,主要包括:
接入 GitHub 代码源
第一步:新建 GitHub OAuth 应用程序
下面以 GitHub Organization 为例,如下所示。
![]()
![]()
第二步:配置 GitHub OAuth 应用程序
![图片]()
在
新建应用程序页面,你需要进行如下步骤:
第三步:获取 Client ID、Client Secret 信息
应用创建成功后,GitHub 会返回应用的基本信息,点击 Generate a new client secret 生成 Client Secret。
![]()
![]()
第四步:将 Client ID、Client Secret 集成到系统
切换到 Zadig 系统,管理员依次点击系统设置 -> 集成管理 -> 代码源集成 -> 点击添加按钮。
![]()
依次填入如下已知信息:
信息确认无误后点击、前往授权,耐心等待,此时系统会跳转到 GitHub 进行授权。
点击授权按钮,同意授权后,GitHub 会跳转到 Zadig 系统,至此 GitHub 集成完毕。
产品交付
第一步:项目配置
进入 Zadig 系统,新建项目 voting。
进![]()
第二步:创建服务与服务构建
这里我们需要为以下 5 个服务添加服务配置:
-
vote
-
worker
-
result
-
redis
-
db
并为以下三个业务服务添加构建以支持持续交付:
注:服务配置指的是 YAML 对这个服务的定义。Kubernetes 可以根据这个定义产生出服务实例。可以理解为 Service as Code 。
Zadig 提供两种方式管理这些模板:
这里,我们使用代码仓导入的方式。案例所需 YAML 配置位于 koderover/zadig 仓库 freestyle-k8s-specifications 文件目录中,现在要做的就是把它们导入。
![]()
以 result 服务为例,在构建脚本中填写以下代码:
cd $WORKSPACE/voting-app/<service-directory>docker build -t $IMAGE -f Dockerfile .docker push $IMAGE
重复以上配置服务构建过程,完成 vote 、 result 和 worker 的构建配置,注意根据不同的服务修改脚本中的 <service-directory> 参数。
第三步:加入运行环境
![]()
![]()
第四步:工作流交付
![]()
![]()
![]()
![]()
![]()
vote 页面:
![]()
result 页面:
![]()
第五步:配置自动触发工作流
添加触发器,使得代码 Push 或者 Pull Request 都触发 result,vote,worker 三个服务的重新构建和部署:
![]()
![]()
![]()
![]()
第六步:代码改动持续交付
![]()
![]()
![]()
关于 Zadig
Zadig 是基于 Kubernetes 设计、研发的开源分布式持续交付 (Continuous Delivery) 产品,为开发者提供云原生运行环境,支持开发者本地联调、微服务并行构建和部署、集成测试等。Zadig 内置了面向 Kubernetes、Helm、云主机、大体量微服务等复杂业务场景的最佳实践,为工程师一键生成自动化工作流 。
欢迎大家 Star、Fork、 Watch!和众多开发者一起探讨、交流,共建开源社区!
Zadig on Github / Zadig on Gitee
阅读原文 / 加入 Zadig 技术交流群