测试和验证环境作为工程师的协同平面,承担着至关重要的作用。对于多人协同的团队来说,对环境的使用和权限控制是日常工作中一个避免不了的槽点:着急发布新功能做测试验证但是只有管理员才有权限操作;一个不合时宜的发布甚至会带来生产事故让企业遭受巨大损失。不同开发者对环境和业务的熟悉程度不一样,让正确的人做正确的事;设计一个适合自己团队、基于环境权限分配的自动化协作流程,就变成一件迫在眉睫的事情。
Zadig 协作模式
Zadig 协作模式可以很好的解决上述痛点:支持对不同的工作流和环境配置不同的使用权限,批量按需赋予给团队中不同的角色成员。 ![]()
下面我们以一个场景设定,来帮助大家了解 Zadig 协作模式,如何帮助团队实现权限管理、高效自动化协作的全流程。
案例场景实践
该案例场景实战讲解 Demo 项目的搭建、管理员如何配置、以及不同工程师视角的使用过程。
Demo 项目搭建
- 以
microservice-demo 项目为例,参考教程:如何使用 GitLab + Zadig 实现产品级持续交付
- 为项目配置额外的资源供使用
- 新增环境:
pre-release
- 新增工作流:
microservice-demo-workflow-pre-release 以上基础资源将满足从研发到交付上线的整个生命周期,以及在不同的环节团队成员的合作诉求。 ![]()
一个典型的研发过程:
- 开发工程师:在
dev 环境进行功能开发、自测 debug、bugfix 等。日常对 dev 环境有极其频繁的变更诉求。自测完毕后,提交测试验收。
- 测试开发工程师:新的变更发布到
qa 环境中进行集成测试。日常对 qa 环境的鲁棒性和正确性有一定的要求。
- 运维工程师:负责将质量保障通过的功能灰度到
pre-release 环境(预发布环境),灰度验证无误后再全量部署到生产,对 pre-release 环境有极高的权限限制。
权限与协作需求分析
不同角色的工程师对于环境分别有不同的使用诉求和时机,而 dev / qa / pre-release 环境也分别有不同的使用目标。以下是不同角色、工作流、环境需求对照表:
![]()
如何配置协作模式
针对以上场景,描述管理员如何一步步配置协作模式
配置权限前置操作
配置协作模式前需要先把项目成员添加到项目中。
进入权限->添加成员,并赋予 project-read-only 角色。
![]()
点击项目配置中的协作模式,进入协作模式配置界面。 ![]()
为不同角色配置协作模式
分别为各个角色配置不同的协作模式,根据实际需要分配工作流资源和环境资源
开发工程师对环境和工作流的使用诉求见下表: ![]()
为开发工程师配置协作模式的具体过程:
- 新建协作模式
dev,选择开发组成员
- 配置
microservice-demo-workflow-dev 工作流资源的使用权限 ![]()
- 配置环境资源:
dev 共享资源,可以查看、配置、管理服务实例、服务调试
qa 共享资源,可以查看环境、管理服务实例,用于和测试(开发)工程师协同诊断问题
![]()
- 继续新建协作模式
dev-independent,选择开发组成员,配置独享工作流和独享环境,配置资源回收策略:30 天
![]()
根据项目需要为测试(开发)工程师、运维工程师配置相应的协作模式 qa、sre,此处不赘述。 ![]()
工程师如何使用
当项目成员登录 Zadig 系统访问相应项目时,系统会为开发者分配项目资源。
开发工程师视图
- 工程师 flyer 访问
microservice-demo 项目,自动进入资源分配页面,点击确认
![]()
- 场景一:日常 bugfix,改动影响面小,风险可控,可执行工作流
microservice-demo-workflow-dev 更新共享环境 dev ![]()
- 场景二:新 feature 开发,暂时无法保证质量,没有信心部署到共享
dev 环境,可执行独享工作流更新独享环境进行自测 debug ![]()
- 场景三:当测试(开发)工程师反馈集成测试验收不符合预期,可以进入qa 环境查看,进行联合诊断
![]()
测试工程师视图
- 测试工程师 jody 进入该项目,进入资源分配页面,点击确认
![]()
- 当有业务集成测试需求时,执行工作流 microservice-demo-workflow-qa 更新 qa 环境,做集成验收
![]()
运维工程师视图
- 运维工程师 leo 进入该项目,进入资源分配页面,点击确认
![]()
- 需要灰度发布时,执行工作流
microservice-demo-workflow-pre-release 更新环境 pre-release ![]()
- 当开发工程师反馈
dev 环境有故障时,可对其进行诊断,协同排查;对 qa 环境的故障诊断操作也同理
至此基于环境权限分配的自动化协作流程介绍完毕,每个团队需要根据自身现状设置合理的权限和资源分配策略,实现基于环境平面的高效协作。
Zadig,让工程师更专注创造。欢迎加入 开源吐槽群🔥
Zadig on Github
Zadig on Gitee