男神鹏:微服务开发规范与CI接入流程
工业云微服务统一接入流程(方便后续标准化和接入交付平台):
- 接入镜像构建
- 录入微服务信息:暂时忽略
镜像构建
工业云后台所有微服务的软件源码统一通过 QCI 进行构建;构建所依赖的脚本和 Dockerfile 统一托管在 git 项目tools中,因此微服务项目的组织形式须符合以下两种形式:
- 多微服务项目【推荐方式】,例如 iam,asm,或者参考文档项目工程规范
- 独立微服务项目,例如 instance-center
所有微服务项目都通过 QCI 模板的方式来创建 QCI 构建任务,请注意以下两点:
- 每个项目尽量在每个迭代创建一个构建任务,不要随意创建,后续统一清理现有;
- 代码库认证请选择“SSH + Token”方式,相关凭据选贼GIT_SSH即可,自行创建会导致 QCI 构建状态无法同步到工蜂。
具体接入步骤请参考以下内容:
多微服务项目接入 QCI
下面我们以项目 iam 为例,独立微服务项目如何接入 QCI:
- 选择构建模板QCI构建模板_后台微服务项目,并新建任务:
- 输入任务名称,建议名称为“项目名-迭代名”;关联需要的代码库:
- 选择名为“GIT_SSH”认证,如果没有的话,请看第4步;
- 新建认证(可选):
4.1 选中需要的代码库,如果没有的话,请先登记代码库
4.2 新增认证,认证方式选择SSH + Token,凭据选择GIT_SSH - 查看基于模板生成的构建任务-iam-来自模板:
- 任务构建时,如何设置环境变量
MODULES
?- 构建多个微服务,可以填写多个微服名,并用英文分号分割
- 构建单个微服务,填写单个微服务名
- 构建所有微服务,填为空即可
独立微服务项目接入 QCI
下面我们以项目 instance-center 为例,独立微服务项目如何接入 QCI:
- 选择构建模板QCI构建模板_后台微服务项目,并新建任务:
- 输入任务名称,建议名称为“项目名-迭代名”;关联需要的代码库:
- 选择名为“GIT_SSH”认证,如果没有的话,请看第4步;
- 新建认证(可选):
4.1 选中需要的代码库,如果没有的话,请先登记代码库
4.2 新增认证,认证方式选择SSH + Token,凭据选择GIT_SSH - 修改环境变量
MODULES
为接入项目的名称即可,例如项目instance-center,我们可以查看基于模板生成的构建任务-instance-center-来自模板和instance-center-crontask来自模板:
注意:如果发现构建失败,请检查:
是否使用 vendor 模式进行构建,但是没有上传 vendor目录?
如何确定是否使用 vendor 模式:检查项目的 makefile 中-mod=vendor
如果发现容器运行异常,请检查容器的工作目录,新的 dockerfile 模板已经改为/data
接入模板后,会知道镜像名称的改变,请注意查看下
备注:服务构建完后,会同时推送到以下两个镜像仓库中:
# 非云梯腾讯云仓库,边缘机房可以使用该账号
ccr.ccs.tencentyun.com/cloudindustry
username:100008089439
password:LRSxVZwaZ#kj
# 云梯自动化测试环境仓库,日常开发请勿使用
ccr.ccs.tencentyun.com/autotest-cloudindustry
username:100011201700
password:test@D0cker
查看构建产物
目前,QCI 的构建产物为:
- 服务镜像列表:message.txt
- 服务环境模板:env.yaml
构建环境变量说明
- MODULES:请查看接入步骤说明
- MICRO_*:这两个参数用于构建时指定微服务运行的环境变量,如果是 Docker Swarm 环境下,请将这两个值置为空;
- 构建版本号,请自行根据迭代版本进行修改运行配置,如下所示: