本次最佳实践将为您介绍敏捷PaaS容器服务CICD在实际环境中的应用。
前提条件
背景信息
环境管理
平台支持自定义构建环境管理,包括创建、修改、删除环境等操作。在环境列表页面展示了环境的名称、集群、镜像、属性、创建时间以及操作,如图所示:
依赖管理
用户可以上传自定义依赖文件到对应的依赖库,依赖上传支持zip,tar格式的压缩文件及其他非压缩文件的任何格式。后续在流水线定义过程中可挂载依赖库进行编译和打包,提升整体执行效率。
平台支持创建、上传、下载、查看、删除等功能,在依赖管理页面展示了依赖的名称、存储服务、集群、类型、存储地址、属性以及操作,如图所示:
流水线
流水线分为CI、CD两大类型(也可以合成一种类型)。平台支持创建流水线、查看流水线详情、修改流水线、删除流水线、执行/停止流水线、复制流水线及数据权限等操作。容器云流水线页面如图所示:
创建流水线平台支持流水线持续集成和人工执行,流水线的持续集成支持不同的自动触发方式,可根据自己的业务场景选择不同自动触发方式,也可以选择关闭持续集成选择手动触发方式。流水线目前支持以下自动触发方式:
- 定时触发:分为按周、按月跟自定义。根据设定的时间,定时触发流水线。
- Poll Scm:分为按周、按月跟自定义。根据设定的时间定时检查代码是否更新,如果代码更新,则触发执行流水线,如果代码无更新,则不触发。
- Webhook:在gitlab持续集成配置中设置web hook地址,在gitlab上提交代码,触发流水线;在svn上更换文件配置后上传文件,触发流水线。
- 流水线触发:所选流水线执行成功之后触发流水线。
您可以查看流水线的详细信息。
多环境解决方案
一整套的云平台PaaS层, CICD流水线做到完美适配并最小程度对现有基础设施的侵入。
从上图看出,从项目经理发起项目开始,Jira等项目内容管理工具就会接入,PM在devops上初始化项目分配任务,开发人员领取任务,开发代码到代码库。
此后,一旦有代码改动提交,jenkins就会自动触发拉取最新的代码做代码扫描,得出质量报告,推送到下一个CI单元,去构建镜像。
构建好的镜像会自动部署到测试环境的容器服务上,这时候测试人员就可以先去测试环境查看应用效果,应用正常就可以将镜像同步到生产环境的镜像仓库,再去生成环境部署即可。
容器云平台支持统一配置管理,可实现一份镜像多环境部署,环境可因用户自定义设置如Dev,test,QA,production等,支持自定义脚本配置执行。用户可自定义在应用执行部署之前或部署之后执行自定义脚本,并支持容器的方式执行自定义脚本,支持用户自己的基础镜像执行定制化脚本,支持手动触发和代码提交后的自动触发,支持灰度,蓝绿发布,支持发布回滚,支持一键编译,打包,发布,部署,升级等。大大的提高了开发,测试,发布的效率。
支持对接Git,SVN等代码仓库,通过DevOps部署的应用服务镜像支持按角色进行权限隔离。容器云平台已对接打通DevOps权限体系,同一租户下相同角色的用户应用该镜像相应的读写权限,不同租户下的用户权限隔离,支持主流开发语言编译环境,如JAVA,Node.js,Golang,Ruby,Python等,支持编译命令自定义配置,用户可自定义命令配置项,支持镜像构建配置,并可自定义配置Dockerfile或YAML文件,通过分布式文件系统和资源缓存的方式挂载编译依赖,提高编译效率。
容器云平台通过调度系统决定了当前集群的主机资源能否被合理利用以及当前应用是否被合理的分配了资源,通过合理的调度实现资源的高效利用。容器云平台的调度系统支持应用亲和,反亲和调度,节点亲和反亲和调度,支持排他性调度,支持DaemonSet方式调度,支持跨数据中心的调度方案从而实现资源高效分配和应用智能调度。