DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash ,...

57
DevCloud 最佳实践 文档版本 03 发布日期 2018-09-15 华为技术有限公司

Transcript of DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash ,...

Page 1: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

DevCloud

最佳实践

文档版本 03

发布日期 2018-09-15

华为技术有限公司

Page 2: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

版权所有 © 华为技术有限公司 2018。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传

播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或

特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声

明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文

档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司

地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129

网址: http://www.huawei.com

客户服务邮箱: [email protected]

客户服务电话: 4008302118

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 i

Page 3: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

目 录

1 前提准备........................................................................................................................................... 11.1 华为云账号.................................................................................................................................................................... 11.2 Git 客户端...................................................................................................................................................................... 11.3 已创建好的项目............................................................................................................................................................ 21.4 相关名词解释................................................................................................................................................................ 4

2 Web 项目 on DevCloud(视频)................................................................................................ 5

3 Git on DevCloud............................................................................................................................73.1 目的................................................................................................................................................................................ 73.2 Git 概述.......................................................................................................................................................................... 73.3 CodeHub 云端操作...................................................................................................................................................... 113.4 Git 本地研发场景........................................................................................................................................................ 143.5 Git 工作流.................................................................................................................................................................... 193.5.1 Git 工作流概述......................................................................................................................................................... 193.5.2 集中式工作流........................................................................................................................................................... 203.5.3 功能分支工作流....................................................................................................................................................... 213.5.4 Gitflow 工作流..........................................................................................................................................................213.5.5 Forking 工作流..........................................................................................................................................................23

4 Docker on DevCloud.................................................................................................................. 254.1 目的.............................................................................................................................................................................. 254.2 Docker 概述................................................................................................................................................................. 254.3 环境准备...................................................................................................................................................................... 254.4 研发场景...................................................................................................................................................................... 324.5 代码管理场景.............................................................................................................................................................. 334.6 代码质量评估场景...................................................................................................................................................... 364.7 持续交付(CI/CD)场景............................................................................................................................................39

5 PHP on DevCloud....................................................................................................................... 47

6 C# on DevCloud.......................................................................................................................... 48

7 Android on DevCloud................................................................................................................ 49

8 Cocos on DevCloud.....................................................................................................................50

9 node.js on DevCloud.................................................................................................................. 51

DevCloud最佳实践 目 录

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 ii

Page 4: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

10 FAQ.............................................................................................................................................. 52

11 附录............................................................................................................................................... 53

DevCloud最佳实践 目 录

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 iii

Page 5: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

1 前提准备

1.1 华为云账号

1.2 Git客户端

1.3 已创建好的项目

1.4 相关名词解释

1.1 华为云账号

背景信息

使用华为云软件开发服务(DevCloud)前,需要注册一个华为云账号。

操作步骤

步骤1 打开华为云网站www.huaweicloud.com。

步骤2 单击页面右上方“注册”。

步骤3 根据界面提示填写基本用户信息并完成注册。

已完成注册的账号即为企业管理员。

----结束

1.2 Git 客户端Git是一款开源的分布式版本控制系统(Distributed Version Control System) ,诞生于2002年,由Linux之父Linus Torvalds带领Linux开源社区开发完成,初衷是用其管理Linux内核的庞大的开源代码。在当今敏捷开发成为主流,研发周期短,跨地域协同开发多的大形势下,选择Git版本管理工具是大势所趋。国内外有很多基于Git的云端代码托管服务,DevCloud代码托管服务就是其中之一。

代码托管(CodeHub)是面向软件开发者提供的基于Git的在线代码托管服务,包括代码克隆/下载/提交/推送/比较/合并/分支等。代码一键下载到本地,基于本地IDE开发,开发完毕一键推送云端,实现线上线下协同开发。

DevCloud最佳实践 1 前提准备

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 1

Page 6: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

代码托管支持两种传输协议,SSH和HTTPS,可以选择其中一种进行配置使用。Git客户端使用流程如图1-1所示。

图 1-1 Git 客户端使用流程

Git Bash 下载安装

Git Bash客户端软件是本地PC使用Git必须安装的软件,如果本地没有安装,请到https://git-scm.com/downloads下载。

安装成功以后,在开始菜单中会增加Git Bash选项。

配置个人信息

安装完成,运行Git Bash,在弹出终端页面按照下面操作进行个人配置。

$ git config --global user.name “您的名字”$ git config --global user.email “您的邮箱”

生成密钥

运行Git Bash, 生成一对SSH密钥,在弹出的终端中输入下面命令,回车后会提示您输入一个密码,建议不输入,一路回车即可。

$ ssh-keygen –t rsa –C “您的email”

此时,会在~/.ssh文件夹下生成了一对密钥,公钥id_rsa.pub和私钥id_rsa,私钥无需处理,保存在本机就可以了,公钥的内容需要拷贝到DevCloud中。

说明

如果使用HTTPS传输方式,无需此操作。

1.3 已创建好的项目

步骤1 进入华为云首页,如图1-2所示。

DevCloud最佳实践 1 前提准备

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 2

Page 7: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 1-2 华为云首页

步骤2 单击“产品 > 软件开发服务”,进入DevCloud产品首页,如图1-3所示。

图 1-3 DevCloud 产品首页

步骤3 单击“免费体验”,根据提示输入已获取的账号,进入DevCloud首页,如图1-4所示。

说明

l 注册的企业管理员登录选择“账号登录”方式。

l 普通用户(即企业管理员自己创建的用户)登录选择“IAM用户登录”方式。

DevCloud最佳实践 1 前提准备

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 3

Page 8: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 1-4 DevCloud 首页

步骤4 单击右上角“新建项目”,设置项目名称、开发流程和项目描述,默认以“Scrum流程”项目为例,如图1-5所示。

图 1-5 新建项目

步骤5 单击“新建”按钮即完成了一个项目的创建。

----结束

1.4 相关名词解释

表 1-1 名词解释

名词 解释

华为云软件开发服务DevCloud

华为云软件开发服务DevCloud(以下简称DevCloud)是集华为近30年研发实践,前沿研发理念,先进研发工具为一体的一站式云端DevOps平台,面向开发者提供包括项目管理、代码托管、流水线、代码检查、编译构建、云测、移动应用测试、部署、发布、CloudIDE、研发协同等基础功能的研发工具服务。覆盖软件开发全生命周期,支持多种主流研发场景,让软件开发更高效。

小幺鸡 小幺鸡项目是一个简单好用的在线文档管理工具,支持restapi、websocket在线测试,支持markdown编辑器,提升开发效率降低接口错误率。

DevCloud最佳实践 1 前提准备

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 4

Page 9: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

2 Web 项目 on DevCloud(视频)

目的

通过视频模拟演示如何从组件团队开始,经过编码、部署等过程,完成一个JavaWeb项目的交付。

实操步骤

1. 使用DevCloud创建交付团队 2min

拿到项目组成员名单后,将项目组成员添加到项目中,并分配角色(没有账号的成员需要申请账号),便于以后任务分配和协作。

2. 将项目需求迁移到DevCloud上进行项目规划,任务分配 5min

将需求文档上传至“文档”或“wiki”中,便于项目组成员查阅;将需求细化拆分,划分迭代,开发人员认领任务,践行Scrum。

3. 在开发过程中使用DevCloud做版本控制器,管理代码 5min

从“代码广场”下载开源项目,使用Devcloud的“代码仓库”管理项目代码内容以及版本。

4. 使用代码检查减少代码安全漏洞,规范开发人员编码习惯 3min

使用“代码检查”检查代码漏洞和不规范书写,优化代码质量,规范开发人员编码习惯,为项目的长期稳定打下良好基础。

5. 使用DevCloud云上构建并管理构建包,为部署做准备 3min

使用“编译构建”对代码进行打包,并通过“软件发布库”保存历代构建包,为部署功能做准备。

6. 使用DevCloud体验云端一键部署 2min

将公网可达的云主机添加到DevCloud中,使用“部署”功能进行云端一键部署,将项目部署到测试环境,查看交付效果。

7. 云测帮助开发团队进行双向追溯,鞭策开发提高代码质量 2min

测试项目是否有Bug,记录产品Bug并关联需求,鞭策开发提高代码质量。

8. 解放运维力量,使用流水线定时自动化运维 3min

项目交付频率提高,项目组成员总加班怎么办,“流水线”通过自动化定时执行各种指定功能,实现DevOps,解放运维力量。

9. 利用仪表盘的直观图表数据进行Scrum迭代会议 1min

DevCloud最佳实践 2 Web 项目 on DevCloud(视频)

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 5

Page 10: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

每个迭代都需要做一个总结,DevCloud的“仪表盘”通过各种统计图表,直观地显示项目在每个迭代中的进展,直白明了。

DevCloud最佳实践 2 Web 项目 on DevCloud(视频)

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 6

Page 11: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

3 Git on DevCloud

3.1 目的

3.2 Git概述

3.3 CodeHub云端操作

3.4 Git本地研发场景

3.5 Git工作流

3.1 目的基于DevCloud实践所编写,用于帮助已经掌握或想要掌握Git的开发者,更好的应用Git,以及更好的将Git与DevCloud结合应用。

3.2 Git 概述从狭义上来说,版本控制系统是软件项目开发过程中管理代码所有修订版本的软件,能够存储、追踪文件的修改历史,记录多个版本的开发和维护,事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。版本控制系统(Version ControlSystems)主要分为两类,集中式和分布式。

集中式版本控制系统

集中式版本控制系统的特点是只有一台中央服务器,存放着所有研发数据,而其它客户端机器上保存的是中央服务器最新版本的文件快照,不包括项目文件的变更历史。所以,每个相关人员工作开始前,都需要从这台中央服务器同步最新版本,才能开始工作,如图3-1所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 7

Page 12: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 3-1 中央服务器

常见的集中式版本控制系统如图3-2所示。

图 3-2 常见的集中式版本控制系统

集中式版本控制系统的优点与缺点如表3-1所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 8

Page 13: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

表 3-1 集中式版本控制系统描述

优点 缺点

l 操作简单,使用没有难度,可轻松上手。

l 文件夹级权限控制,权限控制粒度小。

l 对客户端配置要求不高,无需存储全套代码。

l 网络环境要求高,相关人员必须联网才能工作。

l 中央服务器的单点故障影响全局,如果服务器宕机,所有人都无法工作。

l 中央服务器在没有备份的情况下,磁盘一旦被损坏,将丢失所有数据。

分布式版本控制系统

分布式版本控制系统的特点是每个客户端都是代码仓库的完整镜像,包括项目文件的变更历史。所有数据分布的存储在每个客户端,不存在中央服务器。可能有人会问,我们公司使用Git分布式存储工具,也有“中央服务器”啊?其实,这个所谓的“中央服务器”仅仅是用来方便管理多人协作,任何一台客户端都可以胜任它的工作,它和所有客户端没有本质区别,如图3-3所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 9

Page 14: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 3-3 分布式版本控制系统

常见的分布式版本控制系统如图3-4所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 10

Page 15: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 3-4 常见的分布式版本控制系统

分布式版本控制系统的优点与缺点如表3-2所示。

表 3-2 分布式版本控制系统描述

优点 缺点

l 版本库本地化,版本库的完整克隆,包括标签、分支、版本记录等。

l 支持离线提交,适合跨地域协同开发。

l 分支切换快速高效,创建和销毁分支廉价。

l 学习成本高,不容易上手。

l 只能针对整个仓库创建分支,无法根据目录建立层次性的分支。

3.3 CodeHub 云端操作

云端仓库功能

云端仓库功能支持新建仓库、仓库克隆、分支管理、标签管理、提交代码、拉取代码、推送代码、代码阅读、在线修改、仓库成员管理、密钥管理等,更多仓库功能介绍请参见代码托管产品介绍。

新建空仓库

1. 在DevCloud代码托管服务中,单击上方“新建仓库”按钮,如图3-5所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 11

Page 16: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 3-5 DevCloud 代码托管

2. 配置新仓库的详细信息,如图3-6所示。

图 3-6 配置新仓库

3. 保存仓库信息后,新建成功的仓库如图3-7所示。

图 3-7 新建好的仓库

本地生成 SSH 密钥并粘贴公钥到云端

1. 运行Git Bash,在终端执行如下命令,会将.ssh文件夹下的id_rsa.pub公钥内容(加粗的字符串)打印到终端,拷贝这些字符串,注意不要有多余的空格。$ cd ~/.ssh $ cat id_rsa.pub

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 12

Page 17: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC92RfP46IkGCux5RGUt6vsXcFxTvvEFHi152JEjzV7iO9J0uKBofJcowIt4gC6lJNzgWwKgHb+gIsehsu0T8kUEVzwTB5uf6m1pzbWHuMlTcst+7NJFSCgVp46KZ4cOLSydUIO8NdEw+6fsmDJxpD3gyGnKJftxCoMl5aUtx0zC3cKI3+LDYqbYnsRMQzBvpEife/JdF2fQKVpmYn2Vqlc7yoM+jp/RoeXOUIaXWyi1vbfy7+NsDyLPn4OC6OCn8XLSJQcCwh5EQaU5ZwQ/uXwkCleKnsEVtif9wFYiUJCYgxFQm0u4FEcNB08iYIhgzsCKlGIXVuFrmYyHtNQXLyP pWX***45@PWX***45

2. 在DevCloud代码托管服务中,单击右上角的“设置SSH密钥”,如图3-8所示。

图 3-8 设置 SSH 密钥

3. 继续单击右上角的“添加SSH密钥”,如图3-9所示。

图 3-9 添加 SSH 密钥

4. 粘贴拷贝的公钥字符串,添加“标题”,单击“新建”,如图3-10所示。

图 3-10 设置公钥字符串

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 13

Page 18: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

从云端下载 HTTPS 密码到本地

1. 在HTTPS密码管理页面单击“修改”,如图3-11所示。

图 3-11 修改 HTTPS 密码

2. 单击重置,下载包含了用户名/密码的txt文档,再将初始密码修改成方便记住的新密码,如图3-12所示。

图 3-12 获取密码

3.4 Git 本地研发场景

在DevCloud云端已经创建了一个只包含README文件的空仓库,然后架构师或者项目负责人需要把本地框架代码推送到这个空仓库,最后,其他开发人员将云端架构代码克隆到本地,进行增量应用开发。

说明

l Git代码传输支持SSH和HTTPS两种传输协议,本节基于SSH传输协议(密钥对配置请参见本地生成SSH密钥并粘贴公钥到云端)进行的操作。

l 如果想使用HTTPS方式,直接下载HTTPS密码(密码下载请参见从云端下载HTTPS密码到本地),当克隆、推送代码时直接输入HTTPS用户名密码即可。

l 同一仓库SSH和HTTPS的地址不同。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 14

Page 19: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

推送架构代码

1. 打开本地框架代码,确保根目录名(DevCloud)与云端创建的代码仓库名一致,在根目录下右键打开Git bash终端,如图3-13所示。

图 3-13 打开 Git bash 终端

2. 推送本地代码到云端。

在当前Git Bash终端依次输入如下命令:

a. 初始化本地代码仓库,执行该命令后,在“D:/code/DevCloud/”下多了一个“.git”文件夹。$ git init

b. 关联云端代码仓库。$ git remote add origin CodeHubUrl”

#仓库地址“CodeHubUrl”如图3-14所示方法获取。

图 3-14 获取 SSH 地址

c. 推送代码到云仓库。$ git add . $ git commit -m “init project”$ git branch --set-upstream-to=origin/master master

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 15

Page 20: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

$ git pull --rebase$ git push

克隆代码

开发人员在本地准备克隆云端架构代码。

1. 在准备把代码克隆到的目标文件夹下,右键打开Git bash终端,如图3-15所示。

图 3-15 打开 Git bash 终端

2. 克隆仓库,URL地址获取方法如图3-16所示。 $ git clone CodeHubUrl //将代码从远端仓库clone到本地

图 3-16 获取 URL 地址

代码提交

一次修改被成功提交到远端仓库会历经四个阶段:“1本地工作区 > 2缓存区 > 3版本库> 4远端版本库”。

通过执行相应的Git命令,文件在这四个区域跳转,并呈现不同的状态,如图3-17所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 16

Page 21: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 3-17 代码仓库

主要涉及如下三步操作:

1. #git add/rm filename //将新增、修改或者删除的文件增加到暂存区

2. #git commit –m “commit message” //将已暂存的文件提交到本地仓库

3. #git push //将本地代码仓库修改推送到远端仓库

分支操作l 新建分支

Git新建分支的本质就是创建一个指向最后一次提交的可变指针,所以,Git分支的创建不是复制版本库的内容,仅仅是新建了一个指针,它以40个字符长度SHA-1字串形式保存在文件中。

#git branch branchName commitID

基于commitID即某一个全球版本号拉出新分支,如果没有commitID则基于当前分支的HEAD拉出新分支。

例如,新建feature分支,执行的命令为git branch feature,如图3-18所示。

图 3-18 新建分支

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 17

Page 22: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

l 切换分支

命令如下。

#git checkout branchName

例如,切换到feature分支,执行的命令为git checkout feature,如图3-19所示。

图 3-19 切换分支

l 分支合并

无论哪种工作流都会涉及到分支合并(把一个分支中的修改整合到当前分支),主要有两种方法:三方合并(merge) 和衍合(rebase)。通过对同一种场景进行不同操作体会两种合并方法的区别。

场景:master分支新增了C4节点, hotfix分支新增了C3节点,现将hotfix分支合并到master分支:

a. 三方包括hotfix新增节点C3,master新增节点C4,以及两者的共同祖先节点C2。这种合并操作简单,但新增合并节点C5,形成了环形,版本记录可读性差,如图3-20所示。#git checkout master#git merge hotfix

图 3-20 三方合并结果

b. 衍合先将master分支新增节点C4以补丁形式保存在.git/rebase目录中,然后同步hotfix分支最新代码,再应用补丁C4’,如图3-21所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 18

Page 23: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

#git checkout master#git rebase hotfix

图 3-21 衍合结果

l 冲突解决

a. 场景一:两个合并分支修改了同一行代码

解决方法:

i. 分析哪种修改方法正确,手动合并。

ii. 提交修改。

b. 场景二:文件被重命名为不同的名字

解决方法:

i. 确认哪个名字是正确的,删除错误的。

ii. 提交修改。

3.5 Git 工作流

3.5.1 Git 工作流概述

什么是Git工作流?你可以理解为代码管理的分支策略,它不仅仅是版本管理范畴,更服务于项目流程管理和团队协同开发。所以,有必要制定适合自己研发场景的工作流。

下面介绍四种工作流的工作方式、优缺点,以及使用中的一些注意事项。

l 集中式工作流

l 功能分支工作流

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 19

Page 24: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

l Gitflow工作流(Devcloud推荐)

l Forking工作流

研发团队可以根据实际研发场景制定合理的工作流,能有效提高项目管理水平和团队协同开发能力, 并通过华为软件开发云CodeHub平台,高效、安全的管理代码资产,将更多的精力集中在业务开发上,实现持续集成、持续交付和快速迭代的目标。

3.5.2 集中式工作流

集中式工作流适合5人左右小开发团队,或是刚从SVN工具转型为Git的团队,它只有一个默认的maste分支(相当于svn的trunk主分支),所有人的修改都是在master分支上进行的。但是,这种工作流无法充分发挥git优势和多人协同,不推荐使用。

工作方式

开发人员将master分支从中央仓库克隆到本地,修改完成后再推送回中央仓库master分支。

优点

不涉及分支交互操作。

缺点

l 不适合人员较多的团队,当人员10+时,解决开发人员之间的代码冲突会耗费很多时间。

l master分支提交频繁。

l master分支不稳定,不利于集成测试。

Tips:如何尽量避免产生冲突和不合理的提交历史?

开发人员在开发一个新功能之前,一定要在本地同步中央仓库最新代码,使自己的工作基于最新的代码之上;开发完成后,在提交新功能到中央仓库前,需要先fetch中央库的新增提交,并rebase自己的提交。这样做的目的是,把自己的修改加到中央仓别人已经提交的修改之上,使最终的提交记录是一个完美的线性历史,而不是环形,如图3-22所示。

图 3-22 工作流举例

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 20

Page 25: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

1. 开发人员A和开发人员B同时在某个时间拉取了中央仓库的代码。

2. 开发人员A先完成了自己的工作,并提交到中央仓库。

3. 开发人员B需要在本地执行git pull –rebase中央仓库的新提交,这时开发人员B的本地仓库就包含了开发人员A修改的内容,并在A的基础上增加了自己的修改。

4. 开发人员B将代码推送到中央仓库。

3.5.3 功能分支工作流

通过新建几个功能分支,增加开发者的交流和协作,它的理念是所有的功能开发都应该在master分支外的一个独立分支进行,这种方式隔离了开发者的工作空间不被互相干扰,保证了master分支的稳定性。

工作方式

开发人员每次在开始新功能开发前,需要在master分支上拉取一个新分支,并起个有描述性的名字,比如video-output或issue-#1061,这样可以让分支用途明确。功能分支不但存在开发人员本地仓库,也应该推送到中央仓库,这样就可以在代码不合入master分支的情况下与其他开发人员分享代码。

优点

l 分支合并前可以使用pull request进行code review。

l 降低了master分支的提交频率。

缺点

只有一个master分支作为集成,仍然不是很稳定,不适合大型开发。

3.5.4 Gitflow 工作流

Gitflow一般用于管理大型项目,它为不同的分支分配一个很明确的工作角色,并定义分支之间什么时候进行交互,如图3-23所示。

图 3-23 Gitflow 工作流

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 21

Page 26: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

工作方式

l master分支:

生产分支,最稳定的版本,一直是ready to deploy状态。不接受开发人员直接commit,只接受从其他分支merge操作。在很多企业中,这个分支被默认开启分支保护,只有维护者可以操作。

l hotfix分支:

从master分支拉取的临时修复分支,用于解决一线紧急bug。bug解决后需要合入master分支并打上新的版本号,这个修改也需要同时合入develop分支。

l develop分支:

从master分支拉取的开发分支,用于功能集成。包含所有要发布到下一个Release的代码用于开发集成、系统测试。

l release分支:

临近既定的发布日,就从develop分支上拉取一个release分支,任何不在当前分支中的新功能都推到下个发布中。release分支用于发布,所以从当前时间点之后新的功能不能再加到这个分支上,这个分支只做Bug修复、文档生成和其它面向发布的任务。当对外发布的工作都完成了,release分支合并到master分支并分配一个版本号打好Tag;另外,这些从release分支新做的修改要反向合并回develop分支。

l feature分支:

开发者使用的特性分支,父分支是develop分支,当新功能完成时,合入develop分支。新功能提交从不直接与master分支交互。

开发人员提交新功能的两种途径:

l 团队有专人review审核新功能

a. 开发人员将feature分支推送到华为软件开发云代码托管平台(中央仓库)。

b. 发起一个从feature分支合并到develop分支的合并请求,并指给review专员。

说明

DevCloud代码托管中支持“合并请求”功能,直接选择源和目的分支,仓库管理员(项目经理、创建仓库的开发人员、被给予仓库管理权限的开发人员)有权限接受此合并请求。

c. review专员(上图中的developerE)审核。如果通过,将feature分支的新功能合并到develop分支,并删除feature分支;如果未通过,拒绝该请求并注明拒绝原因。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 22

Page 27: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

l 开发人员自审核新功能

a. 开发人员在本地仓库将feature分支合并到develop分支,并删除feature分支。

b. 将本地develop分支的修改推送到华为软件开发云代码托管平台(中央仓库)。

优点

l 使用一个用于发布准备的专门分支(release分支),使得一个团队可以在完善当前的发布版本的同时,可以在develop分支并行继续开发下个版本的功能。这也打造了可视化的发布阶段,团队成员都可以在仓库网状结构中可以看到发布状态。

l 使用紧急修复分支(hotfix分支)让团队可以处理紧急问题的同时而不打断其它工作或是等待下一个发布再合入hotfix修改。我们可以把hotfix分支想成是一个直接在master分支上处理的临时发布。

l 大型项目人员协作频繁,流程较多,合理的多角色分支帮助研发有条不紊进行。

l 更符合devops理念。

缺点

l 学习成本较高。

l 如果团队不遵守使用约定,带来的影响更大。

3.5.5 Forking 工作流

Forking工作流区别于前三种工作流的最大特点是每个开发人员都有一个从公共仓库fork出来的属于自己的公共仓。Forking工作流适合外包、众包以及众创和开源场景。接包方的开发人员从项目公共仓fork自己的公共仓库进行操作,并不需要被项目公共仓直接授权,如图3-24所示。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 23

Page 28: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 3-24 Forking 工作流

工作方式

1. 将“项目公共仓”fork出一个“个人公共仓”。

2. 将“个人公共仓”clone到“本地仓库”。

3. 操作“本地仓库”,修改完成后提交到“个人公共仓”。

4. 为“个人公共仓”提交一个pull request给项目维护者,申请代码合入“项目公共仓”。

5. 项目维护者在本地review、验证本地提交,审核通过后push进入“项目公共仓”。

说明

如果开发人员A的代码未被审核通过合入“公共仓库”,而此代码对开发人员B有借鉴作用,开发人员B可以直接从开发人员A的“个人公共仓”拉取代码。

优点

l 开发人员之间若需要代码协作,可以直接从其他人的“个人公共仓”拉取,无需等到代码提交到项目公共仓。

l “项目公共仓”无需为每个代码贡献者授权。

l 项目维护者通过审核pull request成为代码安全的重要防线。

l 仓库分支的选择可以根据项目实际情况综合使用前三种工作流。

缺点

提交开发人员代码到最终版本库的周期较长,步骤繁琐。

DevCloud最佳实践 3 Git on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 24

Page 29: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

4 Docker on DevCloud

4.1 目的

4.2 Docker概述

4.3 环境准备

4.4 研发场景

4.5 代码管理场景

4.6 代码质量评估场景

4.7 持续交付(CI/CD)场景

4.1 目的基于DevCloud实践所编写,用于帮助想要或者正在使用容器部署服务的用户,如何将他们的应用部署通过DevCloud部署在华为云上。

4.2 Docker 概述Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker相关服务介绍请参见:

l 微服务云应用平台(ServiceStage)l 弹性云服务器(Elastic Cloud Server)

4.3 环境准备

工程初始化文件

数据库以及数据初始化脚本(本文是mysql和bootdo.sql)。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 25

Page 30: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

应用程序中间件以及工程源代码(本文是jdk和bootdo)。

创建代码仓库

1. 进入项目后,单击左侧菜单栏“代码 > 代码仓库”,然后单击“新建仓库”,进入“新建代码仓库”页面,如图4-1所示。

图 4-1 新建代码仓库

2. 创建仓库后通过git客户端将工程源码上传到代码仓库中。

DockerfileDockerfile的作用是:根据业务需要将需要的运行环境与中间件以及程序包加入到镜像中。

1. 首先制作Dockerfile文件,本文用的是ubuntu官方镜像,如下:#选择ubuntu最小镜像FROM ubuntu #制作者MAINTAINER by lilong #创建jdk路径RUN mkdir -p /opt/jdk #创建工程路径RUN mkdir -p /opt/bootdo #拷贝jdk到容器COPY jdk-8u77-linux-x64.tar.gz /opt/jdk #软件包到容器COPY target/bootdo-docker-1.6.9.jar /opt/bootdo #拷贝启动脚本COPY run.sh /opt/bootdo

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 26

Page 31: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

#设置启动脚本可执行权限RUN chmod 700 /opt/bootdo/run.sh #安装jdkRUN tar xzf /opt/jdk/jdk-8u77-linux-x64.tar.gz -C /opt/jdk && rm -rf /opt/jdk/jdk-8u77-linux-x64.tar.gz #设置环境变量ENV JAVA_HOME /opt/jdk/jdk1.8.0_77ENV PATH $PATH:$JAVA_HOME/bin #开放8080端口EXPOSE 8080 #设置容器启动时执行CMD ["/opt/bootdo/run.sh"]

2. 然后将这个Dockerfile上传到工程的根目录下,工程源码即准备完成,如图4-2所示。

图 4-2 工程根目录

Servicestage 集群

1. 创建Servicestage集群,在华为云官方网站产品列表中选择微服务云应用平台,单击“立即使用”,然后选择“资源管理”,单击“新建”,如图4-3所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 27

Page 32: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-3 创建集群

2. 设置好基本信息后单击“下一步”,选择集群配置后单击“立即购买”,如图4-4所示。

图 4-4 当前配置

3. 购买后等待5到10分钟即可创建完成,至此即准备好了servicestage集群。

Docker 镜像

准备完servicestage集群后,就可以上传基础镜像(工程需要用的mysql数据库)。ubuntu的镜像,上传方式如下:

sudo docker login -u cn-north-1@nmTSmjl7QbMm9IUaq9mQ -p 85b1a13965805165808ca897523838ded6c5742e3f73ffbece85bb5acb87c5f3 swr.cn-north-1.myhuaweicloud.com/ll-org/mysqlsudo docker tag mysql swr.cn-north-1.myhuaweicloud.com/ll-org/mysqlsudo docker push swr.cn-north-1.myhuaweicloud.com/ll-org/mysql

上传成功后,已上传的镜像显示在如图4-5所示的位置。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 28

Page 33: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-5 我的镜像

搭建数据库服务

通过servicestage集群来创建数据库服务。

1. 在servicestage控制台的左侧菜单中单击“应用管理”,然后单击“新建应用”,如所示。

图 4-6 选择部署方式

2. 选择“容器应用”后进入详情页面,如图4-7所示。

图 4-7 创建容器应用

3. 设置完基本信息后单击“下一步”,进入“选择镜像”弹出框,如图4-8所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 29

Page 34: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-8 选择镜像

4. 选择之前上传的mysql镜像后,单击确定,进入下一项设置,如图4-9所示。

根据需要选择容器的配置,然后展开高级设置,在“环境变量”页签添加mysql的root密码.

图 4-9 信息设置

5. 切换到“存储”页签,根据需要设置mysql的数据文件在主机的存储位置,如/root/update/mysql/datadir,如图4-10所示。

图 4-10 存储

6. 也可以自行设置,如图4-11所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 30

Page 35: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-11 命令设置

登录主机后创建需要的目录,命令如下:

mkdir -p /root/update/mysql/datadir

7. 配置完成后单击下一步配置访问方式,如图4-12所示。

图 4-12 创建 mysql 应用

8. 这个应用为数据库服务,不需要外网访问,所以“访问类型”可以选择“内部服务”(后面的jar将要选择外部服务了)。

配置好端口的映射关系后单击“下一步”服务即可在1-5分钟内创建完成,如图4-13所示。

图 4-13 访问方式

9. 进入到主机的mysql/datadir目录下,即可看到我们之前通过docker push上传的数据信息,如图4-14所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 31

Page 36: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-14 datadir 目录

10. 验证一下数据库服务是否成功Telnet 10.247.242.90 3306。至此,数据库服务已经搭建完成,可通过servicestage控制台进行快速的停起更新与扩容操作。

4.4 研发场景

示例项目

1. 项目名称:bootdo blog。2. 项目简介:实现了博客论文的在线预览以及后台运维能工作。

3. 项目类型:Java+mysql+h5的B/S架构的web项目。

4. 开发环境:IDEA,VSCODE。5. 部署环境:ubuntu16.04 + mysql。6. 部署方式:docker容器+devcloud+servicestage集群。

通用客户场景

目前软件开发过程中会使用一些免费或者付费 工具帮助我们更高效地进行软件开发,如图4-15所示。

图 4-15 研发场景和工具

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 32

Page 37: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

当前还存在以下缺点:

l 每个项目参与者必须同时使用多种工具,导致工作遗漏和不能及时更新。

l 安装类型的工具会面临版本更新升级的问题。

l 运维人员在系统发布时环境搭建难度大,准备工作比较多,容易出现纰漏导致系统不能顺利发布。

l 开发、测试、运维之间相互隔离,发现问题不能及时定位。

华为云服务方案总览

DevCloud为软件开发者提供即开即用的一站式云端DevOps平台,包括项目管理、代码托管、代码检查、云端构建、发布部署、流水线在内的端到端的软件开发工具,从各个环节提升软件产品的交付质量和速度。另外,华为云还为您提供丰富多彩的云计算产品,如图4-16所示。

图 4-16 华为云服务

4.5 代码管理场景DevCloud提供基于Git的代码托管仓库,仓库提供可视化的管理界面,软件开发者可将自己的软件工程代码上传到此仓库中进行代码托管。

代码同步

1. 进入代码托管首页,单击“设置SSH密钥”,进入“SSH密钥管理”页面,如图4-17所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 33

Page 38: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-17 SSH 密钥管理

2. 单击“添加SSH密钥”,进入“添加SSH密钥”界面,如图4-18所示。

图 4-18 添加 SSH 密钥

说明

根据界面下方“SSH密钥帮助文档”说明生成对应密钥。输入标题,将生成公钥粘贴到“密钥”文本框里,单击“新建”,即完成了SSH密钥的添加。

3. 在代码托管首页,单击“新建仓库”,进入“新建代码仓库界面”,如图4-19所示。

选择“普通新建”,输入代码仓库名称及描述,单击“确认”即创建了一个空的云端代码仓库。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 34

Page 39: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-19 新建代码仓库

4. 创建好的代码仓库展示在首页的代码仓库列表,如图4-20所示。

图 4-20 仓库列表

5. 单击代码仓库对应的SSH,复制仓库SSH地址,将代码仓库克隆岛本地。$ git clone [email protected]:00de687ca8da4a5d8bcf7f5b55969c30/bootdo-docker.git

6. 然后进行项目代码的开发(本文采用的是开源的Demo代码)。

7. 将代码提交、推送到云端仓库。$ git add *$ git commit -m "init"$ git push origin master

代码仓库

在代码托管首页面单击创建的代码仓库,可以进入到仓库详情页面,支持文件在线编辑、仓库提交记录、代码贡献度统计等多种功能,满足各类开发者的需求,如图4-21所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 35

Page 40: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-21 仓库详情

4.6 代码质量评估场景在线进行代码静态检查、代码架构检查、代码安全检查、编码问题检查、质量评分、代码缺陷改进趋势分析,辅助用户管控代码质量。

代码质量检查方法如下:

1. 进入“代码检查”首页,在任务页面可以看到项目下的代码检查任务,如图4-22所示。

图 4-22 任务

2. 单击“新建任务”,进入新建代码检查任务页面,如图4-23所示。

配置相关信息,选择需要检查的代码仓库地址,选择想要检查出的严重问题规则集等。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 36

Page 41: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-23 新建任务

3. 信息配置完成后单击“确定”,任务创建完成。

4. 单击创建好的任务名称,进入“代码检查详情”页面。

单击“启动任务”,任务进入“检查中”状态,并动态显示检查进度,如图4-24所示。

图 4-24 检查进度

– 代码质量评估报告

代码检查任务执行结束后,会生成详细的代码质量报告,评估代码质量,如图4-25所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 37

Page 42: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-25 代码检查详情

– 代码修改建议

在问题列表中查看代码检查结果,针对每个问题都会给出详细的问题描述和修改建议,修改完毕后,再次执行代码检查任务,查看任务执行结果,形成代码质量改进闭环,如图4-26所示。

图 4-26 问题列表

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 38

Page 43: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

4.7 持续交付(CI/CD)场景

编译构建

步骤1 在项目下单击左侧“构建&发布 > 编译”,单击“新建任务”,如图4-27所示。

图 4-27 编译构建

步骤2 进入新建任务“基本信息”页面,根据需要配置相关信息,如图4-28所示。

图 4-28 基本信息

步骤3 单击“下一步”,进入“代码配置”页面,如图4-29所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 39

Page 44: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-29 代码配置

步骤4 选择代码仓库后单击“下一步”,进入“构建配置”页面,如图4-30所示。

图 4-30 构建配置

步骤5 选择构建工具和构建环境后单击“下一步”,进入“构建执行配置”,如图4-31所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 40

Page 45: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-31 构建执行配置

说明

“dockerfile位置”:指的是我们之前在代码仓库中上传的dockerfile的相对路径./Dockerfile,devcloud会根据这个文件创建出用户需要的docker镜像,并且将工程包上传到用户在dockerfile中指定的位置。

步骤6 单击“下一步”,选择执行计划后开始编译。

步骤7 编译成功后会在软件发布仓库下生成一个软件包,可以手动下载,还会在servicestage中的软件中心-镜像仓库下生成我们需要的docker镜像,该镜像就是devcloud根据dockerfile以及代码编译后的程序包自动生成的镜像,可用于容器部署,如图4-32所示。

图 4-32 镜像仓库

----结束

发布

l 软件仓库

DevCloud提供4种类型的发布仓库,前两种是远程Maven私仓,用于Maven类型构建过程中第三方依赖包的的管理。第三个仓库是mirror镜像仓,镜像了一些构建过程中经常以来的中央仓到后台,提升构建速度,体现云端构建的优势。我们本次demo中应用最后一个编译构建仓库,作为生成的软件包的版本归档管理仓库。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 41

Page 46: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

l 版本管理和下载

由于在构建任务里配置了“上传到发布仓库”步骤,每次构建结束后,可以在发布仓库里就会新增一个本次构建生成的软件包,实现软件版本的自动管理。在配置部署任务时就可以在这里选择要部署的软件包文件了。这里支持将某次构建的软件包下载到本地,如图4-33所示。

图 4-33 发布仓库

部署

步骤1 在项目下单击左侧“构建&发布 > 部署”,进入“部署任务”页面,如图4-34所示。

图 4-34 部署任务

步骤2 单击“新建任务”,进入“创建部署任务”页面。填写基本信息,如图4-35所示。

图 4-35 基本信息

步骤3 选择容器部署,选择已创建的servicestage集群,根据需要填写实例的数量,然后在下方选择已生成的镜像,如图4-36所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 42

Page 47: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-36 容器配置

步骤4 选择访问方式(发布为服务),容器内端口映射为8080 to 30000,如图4-37所示。

图 4-37 设置访问方式

步骤5 单击确定后执行部署任务,执行完成后,进入部署详情页面,如图4-38所示。

图 4-38 部署详情

页面展示了部署的步骤和时间等信息,可以通过浏览器访问应用验证路径验证应用是否正常响应,如图4-39所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 43

Page 48: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-39 验证应用

步骤6 登录验证数据库是否正常响应,如图4-40所示。

图 4-40 用户管理

登录成功,至此容器部署完成。

----结束

流水线

所有流程都拉通后,配置对应的流水线,并将所有流程添进来,即可一键执行自动化的构建发布部署,如图4-41所示。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 44

Page 49: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

图 4-41 一键执行流水线

将需要的任务添加进流水线中,并运行流水线,如图4-42所示。

图 4-42 运行流水线

测试

云测(CloudTest)是面向软件开发者提供的一站式测试解决方案,覆盖测试管理、接口测试,多维度评估产品质量,帮助高效管理测试活动,保障产品高质量交付。

l 测试计划

在项目规划阶段将整个项目细化成一个个具体的需求,也是测试计划设计形成的一个过程,测试环节就针对每个需求设计测试用例即可。

l 用例管理

用例管理页面可以对已经创建的测试用例进行管理,可以将用例关联到具体的需求或者针对需求设计测试用例,提交bug时就能够直接将bug指给需求负责人,实现需求-用例-缺陷的双向追溯,如图4-43所示。

图 4-43 用例管理

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 45

Page 50: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

l 设计与验收

设计与验收界面,可以在这里根据需求设计测试用例,以及查看用例执行情况和验收报告,如图4-44所示。

图 4-44 设计与验收

l 测试总览

包括需求覆盖率、缺陷、用例通过率、用例完成率、缺陷分布、用例进展、需求测试进度、成员用例进展和缺陷等,如图4-45所示。

图 4-45 测试总览

至此,软件开发云各服务已拉通,完成了docker部署环境的搭建。

DevCloud最佳实践 4 Docker on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 46

Page 51: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

5 PHP on DevCloud

目的

帮助想要或者正在将PHP项目迁移到华为云DevCloud中的用户,将本地PHP项目迁移到云上。

实际操作步骤请参见:

PHP on 华为云DevCloud

DevCloud最佳实践 5 PHP on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 47

Page 52: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

6 C# on DevCloud

目的

帮助想要或者正在将C#项目迁移到华为云DevCloud中的用户,将本地C#项目迁移到云上。

实际操作步骤请参见:

C# on 华为云DevCloud

DevCloud最佳实践 6 C# on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 48

Page 53: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

7 Android on DevCloud

目的

帮助想要或者正在用华为云DevCloud进行Android开发用户,流畅的使用DevCloud。

实际操作步骤请参见:

Android on 华为云DevCloud

DevCloud最佳实践 7 Android on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 49

Page 54: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

8 Cocos on DevCloud

目的

帮助想要或者正在将Cocos项目迁移到华为云DevCloud中的用户,把本地Cocos在Android平台下的项目迁移到云上。

实际操作步骤请参见:

Cocos on 华为云DevCloud

DevCloud最佳实践 8 Cocos on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 50

Page 55: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

9 node.js on DevCloud

目的

帮助想要或者正在将node.js项目迁移到华为云DevCloud中的用户,将本地node.js项目迁移到云上。

实际操作步骤请参见:

node.js on 华为云DevCloud

DevCloud最佳实践 9 node.js on DevCloud

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 51

Page 56: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

10 FAQ

请参见华为云社区DevCloud产品答疑FAQ。

DevCloud最佳实践 10 FAQ

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 52

Page 57: DevCloud · $ git config --global user.email “您的邮箱” 生成密钥 运行Git Bash , 生成一对SSH 密钥,在弹出的终端中输入下面命令,回车后会提示您

11 附录

视频教程

【新手训练营】几分钟教你掌握各个服务基本操作

项目管理 代码托管 流水线 代码检查 编译构建 云测 部署 发布

【云途进阶课】场景化教学,从实战中玩转DevCloud

l Web应用场景

开发一套EHR系统:规划阶段 开发阶段 交付阶段

l App应用场景

打造一款趣味交友App:规划阶段 开发阶段 交付阶段

迁移上云秘籍

l 从SVN迁移到GIT最强指南

l 为何选择Git版本控制系统

l Git的工作模式

l 如何将本地代码提交到托管平台

DevCloud最佳实践 11 附录

文档版本 03 (2018-09-15) 版权所有 © 华为技术有限公司 53