使用 GitOps 实现应用持续部署
GitOps 是一种通过 Git 仓库作为应用配置和部署的唯一真实来源的持续交付方法。本文将详细介绍如何在 Rainbond 平台上实现 GitOps 持续部署流程,包括代码仓库对接、自动构建配置及完整部署流程。
Rainbond 支持两种 GitOps 持续部署方式:
- 通过 OAuth 对接 Git 仓库,基于源码创建组件是通过打开自动构建按钮,Rainbond 会自动在对应的仓库中配置 WebHook。
- 手动配置 WebHook,在代码仓库中配置 WebHook 地址,并设置触发条件。
前提条件
- 已安装并配置 Rainbond 平台
- 拥有 GitHub、GitLab 或 Gitee 等代码仓库的管理员权限
- 拥有 Rainbond 平台的团队管理员或平台管理员权限
- 确保网络连接畅通,代码仓库和 Rainbond 平台可以相互访问
一、对接代码仓库并配置自动构建
Rainbond 支持对接多种 Git 代码仓库,通过 OAuth 协议实现授权认证,目前支持 GitHub、GitLab 和 Gitee 三种代码仓库。
对接 GitHub
对接 GitLab
对接 Gitee
OAuth 账号认证
在完成 OAuth 配置后,需要进行账号认证与第三方平台互联:
- 点击 Rainbond 页面右上角的用户头像
- 选择 个人中心 -> OAuth 账号绑定
- 在对应的代码仓库平台(GitHub/GitLab/Gitee)点击 去认证
- 按照页面引导完成授权认证过程
基于源码仓库创建应用并配置自动部署
- 完成代码仓库对接后,可以基于源码创建应用并配置自动部署。
- 进入 Rainbond 团队视图,点击 新增 -> 基于源码创建组件
- 选择已对接的代码仓库(GitHub/GitLab/Gitee)
- 浏览并选择要部署的代码项目
- 填写组件名称、应用名称等基本信息
- 打开自动构建开关。
- 点击 创建组件 开始构建
- 在组件创建完成后,可以配置自动构建实现代码提交后的自动部署:
- 进入组件详情页,点击 构建源
- 设置触发关键字,例如
@deploy
(可自定义)
说明:触发关键字是 Git commit 信息中包含的特定字符串,只有当提交信息中包含该关键字时,才会触发自动构建。
二、手动配置 Webhook 实现自动构建
开启 Rainbond Git Webhook
开启组件 Git Webhook 在 组件 -> 构建源 中打开 Git-Webhook 自动构建功能,复制生成的 hook 地址。
配置 Git 仓库 Webhooks
GitHub 配置
GitLab 配置
其他代码仓库配置方式类似,需要说明的是目前 Rainbond hook 触发暂不支持安全请求校验。
三、GitOps 持续部署实践
3.1 完整的 GitOps 工作流
一个完整的 GitOps 工作流包括以下步骤:
- 开发者在本地开发环境修改代码
- 提交代码到 Git 仓库,在 commit 信息中包含触发关键字(如
@deploy
) - Git 仓库通过 Webhook 通知 Rainbond 平台
- Rainbond 检测到提交信息中包含触发关键字,自动拉取最新代码
- Rainbond 自动构建应用并部署
- 应用更新完成,开发者可以立即看到最新变更
3.2 最佳实践
推荐为不同环境配置不同的分支和自动构建策略:
- 开发环境:配置
develop
分支的自动构建,可以使用较宽松的触发条件 - 测试环境:配置
test
或staging
分支的自动构建,使用明确的触发关键字 - 生产环境:配置
master
或main
分支的自动构建,建议增加人工审核步骤
常见问题
Webhook 未触发自动构建
可能原因:
- Commit 信息中没有包含触发关键字
- Webhook 配置不正确或 URL 错误
- 网络连接问题导致 Webhook 请求未到达 Rainbond
- GitLab 版本较高,未允许本地网络 Webhook 请求
解决方法:
- 检查 commit 信息是否包含正确的触发关键字
- 在代码仓库的 Webhook 配置页面检查 Webhook 的送达状态
- 对于私有化部署的 GitLab,检查是否开启了「允许向本地网络发送 Webhook 请求」的选项