Zadig 丝滑接入 GitLab,Webhook 一触即发

编者按:本文来自微信公众号“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 代码仓库后再进行下面的操作。

步骤 0:接入 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 集成完毕。

步骤 1:产品交付-项目配置

进入 Zadig 系统

新建项目,项目名为`microservice-demo`

步骤 2:创建服务与服务构建

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

保存构建配置

步骤 3:加入运行环境

- 点击向导的“下一步”。这时,zadig 会根据你的配置,创建两套环境(dev,qa),以及相关工作流。

- 点击下一步完成向导。根据配置,已经产生两套集成环境和三条自动化工作流。

步骤 4:产品交付-工作流交付

点击“运行”,可以运行工作流。

选择需要更新的服务 `backend` 和 `frontend`,点击“启动任务”运行工作流。

查看工作流运行状况:

进入集成环境,查看服务列表,并点击服务 URL,可以查看网站。

步骤 5:配置自动触发工作流

前提条件:配置 GitLab 的 Webhook,Webhook 配置请参考 Zadig 文档站 [GitLab Webhook]

添加触发器,使得代码 push 或者 Pull Request 都触发 `backend` 和 `frontend` 重新构建和部署:

进入工作流配置页面

添加 Webhook 触发器

配置 Webhook 触发器

backend 服务触发器配置

如上图所示,当 backend 文件夹中的代码变动时会触发 `backend` 服务的更新

frontend 服务触发器配置

如上图所示,当 frontend 文件夹中的代码变动时会触发 `frontend` 服务的更新

保存工作流

步骤 6:改动代码,触发工作流

改动前端代码:

查看工作流运行情况

查看网站运行结果:

通过以上步骤,我们已经完成了 GitLab + Zadig 的项目配置,可以看到通过集成 GitLab 完成对多个微服务的构建、部署、测试等持续交付过程,通过 Zadig 让软件交付变得更丝滑。‍

更多最佳实践:

36氪平台

Copyright 2021 快鲸

扫码免费用

源码支持二开

申请免费使用

在线咨询