编者按:本文来自微信公众号“KodeRover”(ID:KodeRover),作者:Zadig,36氪经授权发布。
GitLab 是一个用于仓库管理系统的开源项目,因为其能被私有化部署,同时有较好的集成性,被企业广泛作为代码托管平台使用。 Zadig 针对 GitLab 极为友好,结合 GitLab Webhook 的能力,提交 Merge Request 后,就可以自动触发 Zadig 工作流的执行,完成服务的构建、部署、测试等持续交付过程,在提交代码后的第一时间可获得 Zadig 工作流的执行结果。 基于 GitLab + Zadig 介绍一个包含前后端微服务架构 Demo 项目、是如何实现全流程自动化、持续交付的。
下面以 Microservice-demo 项目为例,该项目包含 Vue.js 前端服务和 Golang 后端服务,以下步骤包含从 Code 到 Ship 的整个过程的演示。
项目案例源码:Zadig该代码仓库主要包含服务的 YAML 文件和 构建服务所需的 Dockerfile 文件
建议把源码放到自己的 GitLab 代码仓库后再进行下面的操作。
新建 GitLab OAuth 应用程序
GitLab 管理者可以通过 `Admin Area` > `Applications` 来新建应用程序。
配置 GitLab OAuth 应用程序
在新建应用程序页面,需要进行以下操作
- 填写应用的名称
- 回调地址 http://[zadig.yours.com]/api/directory/codehosts/callback 填写: [zadig.yours.com]需要替换为 zadig 系统部署的实际地址
- 赋予权限: api、read_user、read_repository
点击创建
获取 Application ID、Secret 信息
应用创建成功后,GitLab 会返回应用的相关信息,其中包括 `Application ID` 、`Secret` 信息。
将 Application ID、Secret 集成到系统
切换到 zadig 系统,管理员依次点击 `系统设置` -> `集成管理` -> `代码源集成` -> 点击添加按钮。
依次填入如下已知信息:
- `代码源`:此处选择 GitLab
- `GitLab 服务 URL`:GitLab 地址
- `Application ID`:应用创建成功后返回的 Application ID
- `Secret`:应用创建成功后返回的 Secret
信息确认无误后点击 `前往授权`,耐心等待,此时会系统会跳转到 GitLab 进行授权。
点击授权按钮,同意授权后,GitLab 会跳转到 Zadig 系统,至此 GitLab 集成完毕。
进入 Zadig 系统
新建项目,项目名为`microservice-demo`
zadig 提供两种方式管理这些模板:
系统平台管理:在 zadig 中直接输入 YAML 。
代码仓导入与同步:从某个 Git 仓中导入,之后提交到代码仓的 YAML 变更会自动同步到 zadig 系统上。服务 YAML 自动同步到 zadig 系统上的功能会在配置Webhook后生效
这里,我们使用代码仓导入的方式。文件目录中准备好了这些 YAML 。现在要做的就是把 backend 和 frontend K8s YAML 依次导入。
加载服务配置:点击`仓库托管` 按钮 -> 选择仓库信息 -> 选择文件目录。导入成功后,设置自定义变量 `demo_domain` 值,引用系统内置变量`$EnvName`,来区分不同的环境域名。
配置后端服务构建:选择`backend`服务 -> 点击`添加构建` -> 填写构建脚本。
构建配置说明:
- 应用列表选择 `go 1.16.4`
代码信息,选择 `microservice-demo` 所在的代码仓库
构建脚本如下:
cd microservice-demo/backend
make build-backend
docker build -t $IMAGE -f Dockerfile .
docker push $IMAGE
- 保存构建配置
配置前端服务构建:选择`frontend`服务 -> 点击`添加构建` -> 填写构建脚本。
- 构建配置说明:
代码信息,选择 `microservice-demo` 所在的代码仓库
构建脚本如下:
cd microservice-demo/frontend
docker build -t $IMAGE -f Dockerfile .
docker push $IMAGE
保存构建配置
- 点击向导的“下一步”。这时,zadig 会根据你的配置,创建两套环境(dev,qa),以及相关工作流。
- 点击下一步完成向导。根据配置,已经产生两套集成环境和三条自动化工作流。
点击“运行”,可以运行工作流。
选择需要更新的服务 `backend` 和 `frontend`,点击“启动任务”运行工作流。
查看工作流运行状况:
进入集成环境,查看服务列表,并点击服务 URL,可以查看网站。
前提条件:配置 GitLab 的 Webhook,Webhook 配置请参考 Zadig 文档站 [GitLab Webhook]
添加触发器,使得代码 push 或者 Pull Request 都触发 `backend` 和 `frontend` 重新构建和部署:
进入工作流配置页面
添加 Webhook 触发器
配置 Webhook 触发器
backend 服务触发器配置
如上图所示,当 backend 文件夹中的代码变动时会触发 `backend` 服务的更新
frontend 服务触发器配置
如上图所示,当 frontend 文件夹中的代码变动时会触发 `frontend` 服务的更新
保存工作流
改动前端代码:
查看工作流运行情况
查看网站运行结果:
通过以上步骤,我们已经完成了 GitLab + Zadig 的项目配置,可以看到通过集成 GitLab 完成对多个微服务的构建、部署、测试等持续交付过程,通过 Zadig 让软件交付变得更丝滑。
更多最佳实践:
36氪平台
Copyright 2021 快鲸
扫码咨询与免费使用
申请免费使用