自动化构建部署最佳实践
文档版本信息
属性 | 内容 |
---|---|
文档名称 | 自动化构建部署最佳实践 |
文档编号 | 001 |
文档版本 | V0.1 |
版本日期 | 2020/02/07 |
文档状态 | 外部发布 |
制作人 | |
审阅人 |
文档变更记录
版本编号 | 日期 | 作者 | 审核人 | 说明 |
---|---|---|---|---|
V1.0 | 2020-02-07 |
法律声明
阿里云提醒您在阅读或使用本文档之前仔细阅读、充分理解本法律声明各条款的内容。如果您阅读或使用本文档,您的阅读或使用行为将被视为对本声明全部内容的认可。
- 您应当通过阿里云网站或阿里云提供的其他授权通道下载、获取本文档,且仅能用于自身的合法合规的业务活动。本文档的内容视为阿里云的保密信息,您应当严格遵守保密义务;未经阿里云事先书面同意,您不得向任何第三方披露本手册内容或提供给任何第三方使用。
- 未经阿里云事先书面许可,任何单位、公司或个人不得擅自摘抄、翻译、复制本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。
- 由于产品版本升级、调整或其他原因,本文档内容有可能变更。阿里云保留在没有任何通知或者提示下对本文档的内容进行修改的权利,并在阿里云授权通道中不时发布更新后的用户文档。您应当实时关注用户文档的版本变更并通过阿里云授权渠道下载、获取最新版的用户文档。
- 本文档仅作为用户使用阿里云产品及服务的参考性指引,阿里云以产品及服务的“现状”、“有缺陷”和“当前功能”的状态提供本文档。阿里云在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但阿里云在此明确声明对本文档内容的准确性、完整性、适用性、可靠性等不作任何明示或暗示的保证。任何单位、公司或个人因为下载、使用或信赖本文档而发生任何差错或经济损失的,阿里云不承担任何法律责任。在任何情况下,阿里云均不对任何间接性、后果性、惩戒性、偶然性、特殊性或刑罚性的损害,包括用户使用或信赖本文档而遭受的利润损失,承担责任(即使阿里云已被告知该等损失的可能性)。
- 阿里云文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由阿里云和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权、商业秘密等。非经阿里云和/或其关联公司书面同意,任何人不得擅自使用、修改、复制、公开传播、改变、散布、发行或公开发表阿里云网站、产品程序或内容。此外,未经阿里云事先书面同意,任何人不得为了任何营销、广告、促销或其他目的使用、公布或复制阿里云的名称(包括但不限于单独为或以组合形式包含“阿里云”、“Aliyun”、“万网”等阿里云和/或其关联公司品牌,上述品牌的附属标志及图案或任何类似公司名称、商号、商标、产品或服务名称、域名、图案标示、标志、标识或通过特定描述使第三方能够识别阿里云和/或其关联公司)。
- 如若发现本文档存在任何错误,请与阿里云取得直接联系。
本文介绍了使用阿里云云效-专有云版本的配置管理及环境管理两个模块来实现代码的自动化构建、自动化环境部署,进而提升研发效能。本文模拟了一个实际的开发流程,通过云效实现应用的自动化构建部署,提供应用开发准备(应用注册)、开发项目创建、分支拉取及自动化构建部署的参考示例。
测试环境准备是软件测试工作的前提,无论是何种研发模式(瀑布/敏捷)、技术架构(集中式/分布式)都需要在开发阶段频繁去部署测试环境。如果采用传统的手工部署,那么对于开发的每次变更都需要部署人员手工去进行环境部署,这个无疑是非常低效的。另外,需要部署人员的介入也会增加协同成本,在多地协同办公的场景下效率尤其会打折扣。自动化构建部署是提升效率的一大利器,这份最佳实践介绍了如何从0开始通过云效实现自动化构建部署。
【适用场景】
- 传统的瀑布研发模式
- 基于微服务的敏捷研发模式
- 远程多地协同的研发模式
【实施步骤】
- 下图为通过云效实现自动化构建部署的操作流程:
【方案优势】
- 全自动的配置管理,减少配置管理工程师的投入,尤其适合多地协同研发场景。
- 自动化构建及部署,避免专门的人员投入两项工作,提升研发效能。
- 测试环境管理线上化透明化,效率提升的同时能实现数据可视化。
在执行本文操作前,请完成以下准备工作:
- 所在公司已购买并开通配置管理及环境管理产品模块。
- 已注册云效账号并完成认证,可以登录云效平台。
- 完成云效产品培训并通过相关考试。
- 加入云效的钉钉答疑群(联系本公司云效接口负责人入群)。
- 本方案使用 Chrome 浏览器,需提前准备。
- 安装钉钉或企业微信。
5.1 创建仓库权限
【入口】:配置管理 > 权限管理 > 仓库权限 > 创建。
【操作步骤】:权限类型选择 git 或 svn,填写权限名称,输入账号密码,git 也可使用公钥/私钥的格式。确保配置的权限类型具有从代码仓库拉取代码的权限。
5.2 注册应用
通过云效实现应用的自动化构建部署,其前提是:在云效平台上注册,配置其代码路径、构建方式等元数据。
【入口】:配置管理 > 应用 > 应用管理 > 注册应用。
【操作步骤】:
进入应用管理列表。
点击注册应用,进入注册页面。
配置应用基本信息。如:应用名称、应用负责人、应用类型、版本管理工具、有效代码路径等。特别注意:选择的仓库权限必须要有代码路径的操作权限。
配置代码内容。选择代码语言及版本、编译工具及版本、单测模板。
配置构建脚本。构建脚本:可新建,也可从已有的公共脚本中选择。需特别注意的是,集成测试类型的脚本必须存在,否则注册应用无法进行到下一步。其他环境类型的脚本可以依据实际情况选择是否需要。通过云效平台构建代码,云效平台会自动调度构建脚本,从代码仓库拉取代码进行编译打包,并将编译产物上传到专门管理包的服务器,这样自动部署时会从包管理服务器取对应的包。
Java + Maven 的打包脚本如下:
source /etc/profile #使用jdk版本 exportt JAVA_HOME=/usr/install/java8 #进入应用目录如果是应用名字可以写成{appName} cd ${appName} # 编译打包 /usr/install/maven3/bin/mvn clean install -Dmaven.test.skip # 进入target目录,获取构建产物 cd target JARNAME=`ls *.jar` # 命名一个参数 request1="buildNum=${BUILD_NUMBER}" # 命名一个参数,warName上传的jar包一定要写正确 packageName="warName=@${JARNAME}" # 上传jar包 curl -X POST -F "${packageName}" -F 'crid=${crid}' -F 'compileId=${compileId}' -F 'appName=${appName}' -F "${request1}" http://package.switch.aliyun.com:9090/upload
Node.js 打包脚本如下:
source /etc/profile cd ${appName} rm -rf node_modules npm i #chmod +x ./node_modules/.bin/cross-env npm run build tar zcvf ${appName}.tar.gz dist #命名一个参数 request1="buildNum=${BUILD_NUMBER}" #命名一个参数 packageName="warName=@${appName}.tar.gz" #上传构建产物 curl -X POST -F "${packageName}" -F 'crid=${crid}' -F 'compileId=${compileId}' -F 'appName=${appName}' -F "${request1}" http://package.switch.aliyun.com:9090/upload
选择应用部署方式。部署方式可以选择 BASE、EDAS、K8S 等。选择 BASE 部署方式后,直接完成应用创建。EDAS 部署功能类型可以进一步选择普通/Docker/K8S 三种子类型,另外还需配置发布环境、机器等信息,具体参见产品文档中与 EDAS 对接相关内容。配置完成后,点击下一步,完成应用注册。
5.3 新建开发项目
【入口】:配置管理 > 开发项目 > 开发项目列表 > 新建开发项目。
【操作步骤】:输入开发项目名称,选择开发项目类型、归属项目,适当描述当前开发项目所做需求并配置项目的计划发布时间即可完成开发项目创建。根据项目的范围及风险可以选择是否需要申请测试介入。
5.4 自动化构建
【入口】:配置管理 > 开发项目 > 开发项目列表 > 具体开发项目。
【操作步骤】:
- 点击项目名称进入开发项目详情。
- 编辑开发项目信息。 在开发项目详情页面可进一步编辑项目信息、项目成员及项目的需求信息。不同类型的成员对该项目有不同的操作权限,详见云效产品文档关于权限的内容。
- 拉取开发分支。 根据项目的技术架构设计,能够明确此次项目需要改动的应用(代码模块)。然后,通过云效自动拉取应用的开发分支。在开发项目详情页面点击申请变更,选择需要拉取分支的应用。 选择应用之后,可以对应用里配置的代码路径进行分支拉取。此处可以选择已有分支或新建分支,分支名称支持自定义。建议的分支命名方式是:
- 对于 Git,此分支建议为:
feature/项目ID_需求简称_创建日期
- 对于于 SVN,此分支为:
branches/项目ID_需求简称_创建日期
- 对于 Git,此分支建议为:
- 自动化构建。 应用分支创建后,点击“编译打包”按钮即可实现自动化构建。如果存在多套编译脚本,可选择对应的脚本,这种情况一般适用于不同环境类型、构建不同包的场景。亦可选择打分支包或冲突检测包。如果编译失败,可以点击“编译失败”查看详细的日志信息做进一步排查定位。修复问题后,重新点击“编译打包”进行再次构建。
5.5 自动化部署
【入口】:测试环境 > 环境管理 > 开发项目环境申请。
【操作步骤】:应用编译打包成功后,技术人员可以申请测试服务器来部署应用,验证代码功能。在开发环境申请页面找到并展开开发项目后,选择需要部署的应用,点击应用上的申请按钮即可完成测试环境的申请。云效会自动在机器池中申请一台可用的服务器。测试机器申请后点击部署按钮即可进行环境的自动化部署。以上功能依赖于环境管理的处理化配置,详见《环境管理最佳实践》。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论