epic-feature-story-task
凤凰商城 最新实践 demo项目https://support.huaweicloud.com/bestpractice-devcloud/devcloud_practice_2001.html
我解释下编译构建步骤啊
编译,构建这一步是为了将我们这个微服务凤凰商城这个应用的五个组件。把它编译成docker镜像,编译,打包成docker镜像,然后呢,把它推送到我们之前创建的那个SWR私有镜像仓库。
鼻翼构建里的变量,有一个是dockerServer,其实就是SWR的服务器地址,有一个dockerOrg就是SWR的组织,这里需要改为自己的这个组织以及server,这样是为了让我们把打包好的这个每个服务的镜像推送到自有自己的私有镜像仓库。
编译,构建步骤儿的有五个同样的任务都是制作并打包,这个推送到镜像到SWR,是因为我们这个服务有五个组件。然后里面的dockerServer,dockerOrg,其实都是用${ },这种方式,这里其实是取的变量里的值,所以这里大家不用改。
如果这个编译构建任务执行成功了,那回到那个SWR镜像仓库的管理页面,那你可以看到你的五个组建的这个镜像已经成功推送到SWR了,点开以后可以看到具体的一个版本,这个版本是以一个日期加第几次构件。所以说今天这个日期,今天的第一次估计。每次行一次,这个编译构建任务都会生成一个对应的版本。
最后在别人空间任务里有一个docker-componet-standalone.yum文件,这个yum文件是容器的编排文件,用来实现这个应用的部署的。但是这个文件的其实是一个模板文件,所以它编译构建任务里呢,我们把那个对应的我们打包出来的,这个镜像的版本替换成动态的一个版本的,也就是说,把这个模板文件替换成一个真正可以使用的docker-componet编排文件。
最后把它推送到了发布库,也就是点发布,就会看到有对应的文件夹、版本,你可以下载下来看见文件,可用的带有特定版本的docker的特定文件。
部署任务,其实就是为了去执行这个编排文件。然后把它运行起来,把这个应用给运行起来,但是部署步骤的有三个变量,分别是私有镜像仓库的账号,密码以及服务器地址,这里是为了。因为我们在这个启动编排文件的时候,去这个镜像的时候需要认证。所以我们在部署任务的先要登录这个私有仓库,确保能认证,通过来拉取最新的这个边镜像文件。然后把它启动。
几个问题大家需要注意:
- 关于构建任务需要修改什么?
构建任务需要修改 ”参数设置“ 里的dockerServer 以及 dockerOrg
私有镜像仓库地址:https://www.huaweicloud.com/product/swr.html
dockerServer是私有镜像仓库的地址:一般是:swr.cn-north-1.myhuaweicloud.com
dockerOrg是组织:自己创建的组织 - 安装docker时克隆地址失败?
这个是由于pdf文件里地址换行导致的,请大家参考下面的命令:
git clone https://codehub.devcloud.huaweicloud.com/DevOpsylcsxm00001/phoenix-storage.git
cd phoenix-storage
sh install.sh - 大家注意更改构建任务dockerServer 以及 dockerOrg “参数” 的时候 不要复制上空格了
- 构建任务只需要更改参数,其他任何步骤都不需要更改
1元云资源购买链接如下:
云服务器有效期1个月,下单时,镜像请务必选择:
公共镜像 - Ubuntu 16.04 Server 64bit
【https://account.huaweicloud.com/usercenter/#/buyservice/grainCloud?promotionId=P1905151813566441IQO65316KEOLV&promotionPlanId=PPP19051614253521001CLNO707EL0IP&solutionCode=promotion.activity.cn-north-1.20190516-142112-585】
大家注意啊,编译构建任务只需要改两个参数,一个是dockerServer ,一个是dockerOrg 。不需要改具体步骤里的的那个参数。具体步骤实际上是一个变量,还会自动取你改的参数的那个仓库地址以及组织。
大家注意啊,就是编译构建任务,只需要改一个地方,就是。参数设置里的dockerOrg 以及dockerServer 。然后构建步骤里的啊仓库地址以及组织,这个。不需要改,这两个是填的变量,也就是说,它会自动从你参数设置那里去获取你填写的值。
构建步骤里,任何一步都不需要做更改,文档中其实都是在解释每一步是在做什么,并不是让大家去修改。最主要还是第八步,第八步写的是替换SWF,地址版本以及压缩部署文件,这这一步是说这一步是这么去做的,并不是让你把那个下面的命令替换掉实际的命令。
第1章 Day1 HE2E DevOps实施框架概述
Day01.实践打卡任务
创建 DevOps 全流程样例项目
实践背景
本实验文档提供了一个微服务架构的应用程序【凤凰商城】,在整个实验场景中我们将围绕此套代码完成软件研发的整个生命周期的操作。
示例程序简介
【凤凰商城】是一套电子商务商城示例代码。此套示例代码具有结构复杂,逻辑简单,代码 量少,技术栈丰富的特点,可以帮助开发者快速学习华为DevCloud的各项特性以及使用 微服务进行软件开发,测试和部署过程中可能遇到的各种问题。
架构及业务场景
凤凰商城示例程序由5个可以独立开发,测试和部署的微服务组件构成,分别为:
客户端UI服务:
o 业务逻辑:用户可以通过浏览器访问此服务的WebUI,并在特定商品上点击 Like按钮。服务将用户所选择物品的记录保存在Redis缓存中。
o 技术栈:Python, Flask框架
o 应用服务器:Gunicorn
管理端UI服务:
o 业务逻辑:用户可以通过浏览器访问此服务的WebUI,会动态显示客户端 UI上用户点击Like按钮的统计数据。此数据来自PostgreSQL数据库。
o 技术栈:node.js, express框架
o 应用服务器:server.js
工作进程服务:
o 此服务为后台进程,会监控redis缓存中的物品记录,并将新纪录取出并保存 在PostgreSQL数据库中,以便管理端UI可以抽取数据进行统计显示。
o 技术栈:.net core 或者 java (此服务提供2种技术栈实现了同样的功能,可 根据需要修改配置选择其中一个座位运行时进程)
Redis缓存
o 业务逻辑:此服务作为客户端UI服务的数据持久化服务存在。
PostgreSQL数据库
o 业务逻辑:此服务作为管理端UI服务的数据源。
必做打卡任务:一键创建示例项目
打卡任务要求
- 成功创建DevOps 全流程示例项目
准备工作 - 注册华为云帐号(如已注册,请跳过此步) 点此注册
实践步骤 - 进入华为云DevCloud主页 点此进入
- 点击右上角 新建项目 ,选择 DevOps全流程样例项目 ,输入项目名称 phoenix-[华为云ID] ,点击新建。
- 创建完成后,进入 Backlog列表,如下图所示,至此day01实践打卡任务完成。
打卡任务截图
创建好的示例项目后,在Backlog列表界面,截屏或拍照上传至打卡小程序(建议用手机端上传),截图需包含创建的项目名称和华为云用户名。
截图示例:
截图验证点:
- 项目名称 2. 用户名
选做任务:维护项目基本信息
通过本章节您将学习如何对 “凤凰商城” 进行基本信息等维护,以及团队成员管理,并学习如何通过定制站内消息通知以及邮件通知来跟进项目进度。
项目基本信息设置
- 点击设置>基本信息。项目的基本信息列出了项目名称,项目描述,项目类型,创建时间,创建人。项目描述可以根据情况进行修改。项目基本信息设置如下图所示:
收到新的邮件通知
发件人:克里斯 (应用程序开发部副总裁)
收件人:凤凰商城开发团队
主题:欢迎凤凰商城新成员
Hi 兄弟们:我给大家介绍下我们的新成员,从今天起,他们会全职参与到凤凰商城中。
Alex, python开发人员,负责凤凰商城客户端门户开发
Abel, Nodejs开发人员,负责凤凰商城管理端开发
Helen, 测试人员,负责凤凰商城站点测试
项目成员添加与维护
-
点击成员,可以添加新的用户到这个项目中。有两种添加用户的方式,如下表所示:
添加方式 说明
添加成员 添加本企业租户下的成员,如果成员不存在可以添加
通过链接邀请 邀请非本企业租户下的成员
-
点击 “创建用户“ 在该企业租户下创建用户,如下图所示:
-
进入统一身份认证服务,添加企业用户,如下图所示:
-
输入用户名、选择密码访问方式,点击下一步,如下图所示:
-
设置首次输入密码时生成,点击确定,如下图所示:
-
系统会提示“用户创建成功消息”,如下图所示:
-
用户已添加成功,如下图所示:
-
按照同样的方式,分别完成“Abel”、“Helen”用户的创建,如下图所示:
-
回到DevCloud,批量选择刚刚创建的用户,并选择对应的角色权限,点击确定,如下 图所示:
除了本企业用户DevCloud也可以邀请其他企业用户添加到项目中。
-
点击 “通过链接邀请”,如下图所示:
-
点击复制链接,如下图所示
-
将链接发送给邀请人 4. 点击 “待审核” 选项卡,完成用户加入审核。
恭喜,您已经通过 “成员管理” 模块完成了凤凰团队新成员的添加。
站内通知以及邮件通知设置
通过此章节您将学习如何配置通知(站内通知、移动端消息通知、邮件消息通知),来时时跟 踪凤凰商城项目进展情况,配置完成后在后面的章节您将会持续的收到凤凰商城项目进展通 知情况。
- 点击设置>通知>查看站内消息通知,如下图所示:
- 邮件消息通知
1.1DevOps实施策略
为什么敏捷开发才是做软件的正确姿势?
盖好大楼的时候,要加一个地下室。
用户确认的不是需求,而是需求转化为产品后所获得的体验。
研发管理到底需要管理些什么?
(用户角度)需求:用户所要的某一个特定的场景,他希望怎么去用这个软件
(技术角度)产品:哪些菜单、模块
设计过程:将以上两个产生联系
敏捷:一直以条目化的需求作为项目计划
敏捷和DevOps是怎样的关系?
航旅纵横:手机值机
1.2创建DevOps全流程演示
在前端点击Like,在后端会实时的更新这个数据。
现在的需求:在前端上添加一个门店网络查询的功能。
Epic:公司重要的战略举措,比如说:凤凰商城这个系统
Feature:业务系统下具体的功能,功能模块
Story:对功能模块的进一步细分,通常拆分为在一个迭代内可以交付的多个工作力度
Task:对story的进一步拆分,通常把它拆分为开发人员可以直接进行工作的、评估的力度
目前这个项目已经完成了3个迭代
为具体的需求创建测试用例
创建缺陷
将测试用例与缺陷进行了关联
代码
将代码与需求建立关联关系
这时候就不允许直接提交到master分支了
要新建一个分支
接下来看如何合并请求
流水线
第2章 Day2 HE2E之敏捷项目管理
Day02.实践打卡任务
完成敏捷项目管理
实践背景
【凤凰商城】示例项目是耗时数年所开发的汽车零部件配件电子商城。项目采用 Scrum 模 式进行迭代开发,每个迭代周期为 “两周”,前 3个迭代已经完成 “凤凰商城 1.0” 版本的 开发,当前正在进行 “迭代 4” 的规划。 通过接下来的几个练习,您将置身其中完成最新的迭代规划、以及产品的开发、测试、部署。
临时事件: 刚刚接到业务部门的最后通牒,要求月底必须上线 【门店网络查询功能】,可以在凤凰商 城中查询各个门店的相关信息。
必做打卡任务:使用 Scrum 项目模板进行项目规划
通过此章节,您将学习如何使用 DevCloud 提供的 “项目规划” 视图,以思维导图的模式完 成需求从Epic > Feature > Story > Task 的创建以及管理。
打卡任务要求
- 在样例项目中,创建 “门店网络”项目规划 2. 创建新的迭代,并完成迭代管理
准备工作 - 完成Day01.实践打卡任务——DevOps 全流程样例项目
实践步骤
打卡任务 1:在样例项目中,创建 “门店网络”项目规划
-
打开凤凰商城样例项目,点击 工作>项目规划,项目规划视图以树形结构列出了需求从 Epic -> Feature -> Story -> Task 的逐级关系,如下图所示:
接下来让我们看下不同类型的工作项通常是如何区分的,以及如何映射到凤凰项目的:
工作项类型 说明
Epic :通常是公司重要战略举措,比如在凤凰项目中的 “凤凰商城” ,对于“无极限零部 件公司”是一个与企业生存攸关的关键战略措施
Feature :通常是对用户有价值的功能,用户可以通过使用特性满足他们的需求。比如 “凤 凰商城” 中的 “门店网络查询功能”,特性通常会通过多个迭代持续交付
Story :通常是对一个功能进行用户场景细分,并且能在一个迭代内完成,Story通常需要 满足 INVEST 原则
Task :通常是用户故事的细分,准备环境,准备测试用例等都可以是完成 Story的细分 任务 -
创建新的“Feature”, 在“凤凰商城” Epic 上点击 ”插入子主题“,如下图所示:
-
输入标题 “门店网络”, 回车保存,如下图所示:
-
按照同样的方式,完成用户故事 “作为用户应该可以查看、查询所有门店网络” 的创 建,如下图所示:
恭喜,您已经通过 “项目规划” 视图以思维导图的方式完成了【用户故事 - 门店网络查询功 能】的添加。
打卡任务 2:创建新的迭代,并完成迭代管理
通过此章节,您将学习如何使用DevCloud 提供的项目流程管理来帮助你快速的制定团队计 划,管理和追踪相关工作进度。 你将学习如何使用积压工作列表,迭代看板来跟踪迭代中的工作流。
- 创建迭代
- 点击 工作>迭代,进入迭代管理视图:
当前视图列出了所有的迭代,包含过去的 3个迭代,接下来我们创建一个新的迭代作为当 前迭代,请按照当前时间修改项目迭代时间,适应实验场景。 2. 点击 “新建迭代”,输入迭代名称 “迭代04”,设置迭代日期开始日期为本周一,结束日 期为下周五,如下图所示,点击新建:
系统会根据设置的时间周期自动将 “迭代04” 显示在 “当前迭代” 列表,如下图所示:
3. 同样新建并设置 “迭代05” 的时间周期为 “迭代 04” 的下一日期周期
系统根据设置的时间周期自动将 “迭代 05” 显示在 “将来迭代” 列表,如下图所示:
恭喜,您已经通过 “迭代管理” 视图完成了 “当前迭代” 以及 “将来迭代” 的创建。
- 积压工作管理
在市场部门的施压下, “用户故事 -门店网络查询功能” 被指定为最高优先级处理,因为许多 客户需要通过它来查询最近的门店网络地址,从而获取服务。
-
点击 工作>Backlog,打开 “用户故事 - 作为用户应该可以查看、查询所有门店网络”
让我们编辑这个用户故事,将其分配给相关人员,并设置相关字段 -
修改用户故事,描述信息、开始日期、结束日期、预计工时、优先级、重要程度字段信 息,点击确定,如下图所示:
-
您也可以选择将本地附件直接拖放到工作表单上:
-
在积压工作列表中,我们同时可以设置自己关注的用户故事,方便查询,点击 “❤” 即可 关注
-
按照同样的方式,关注 “积分管理 - 无法显示积分规则界面”,关注完成后心形图标变为 红色,表示关注成功,如下图所示:
恭喜,您已经对 “用户故事 - 门店网络查询功能” 表单进行了详细的补充,包括(描述、负 责人、截止日期、以及相关附件)。
- 迭代规划
接下来我们需要对当前迭代(近两周)的工作进行规划,其中最重要的工作 “用户故事 - 门店 网络查询” 需要在本迭代完成并上线
1.打开 工作>迭代>未计划工作项,当前列出了所有未计划的积压工作列表,如下图所示:
2. 鼠标拖动 “用户故事 - 作为用户应该可以查看、查询所有门店网络”,到 “迭代 04” ,如 下图所示:
- 按照同样的方法 将 “用户故事 - 作为管理员应该可以添加限时打折” 以及 “用户故事 - 作为管理员应该可以添加团购活动” 添加到 “迭代 4” 。
- 规划完成后,点击 “迭代 4”, 进入迭代工作列表,如下图所示:
恭喜,您已经完成了 “迭代 4” 的工作计划。 - 分别设置3 个用户故事的结束日期(建议设置2天完成一个用户故事),如下图所示:
- 看板使用以及任务分配
接下来我们需要将 ”用户故事 - 作为用户应该可以查看、查询所有门店网络“ 拆分到开发任 务级别,并指派给对应的负责人、以及完成工时评估
-
切换到看板模式,如下图所示:
-
为 “用户故事 - 作为用户应该可以查看、查询所有门店网络” 创建开发任务,如下图所 示:
-
添加任务输入标题 “前端展示 - 添加门店网络菜单“ ,点击确定,如下图所示:
-
添加任务输入 “后台管理 - 添加门店网络管理维护模块”,点击确定,如下图所示:
-
添加完成后,如下图所示:
在每日站立会议中,可以通过电子白板报告更新任务进度,你可以考虑为团队添置一个带触 摸功能的壁挂平板电视了。 -
拖动白板,以更新 “用户故事” 状态为进行中,如下图所示:
至此day02必做的实践打卡任务已完成。
打卡任务截图
请点击 工作>迭代 ,选中当前迭代并截图,截图中需包含项目名称以及当前迭代[迭代 4] 的工作内容:
截图示例:
截图验证点:
- 项目名称 2. 用户名 3. 迭代 04 – 任务列表
选做打卡任务:使用效率工具监控和跟踪项目状态
通过此章节,您将学习如何使用 DevCloud 提供的效率工具来持续的监控跟进项目进度。
迭代进度视图
通过迭代图表团队可以方便的统计当前迭代的进度情况,包括需求完成情况、迭代燃尽图、 工作量等
- 按照下图方式,展开迭代进度视图
- 展开后,如下图所示
项目仪表盘查看以及管理
项目仪表盘提供了强大的项目进度跟进能力、包括需求进度统计、燃尽图、工作完成度、工 时统计等等 1. 点击 “仪表盘”,进入后,如下图所示:
2.1敏捷开发实践–Kanban和Scrum
2.2动手实验-项目管理
进入backlog的积压工作列表
把未计划工作项拖动到迭代中
进一步拆分
、
第3章 Day3 HE2E之敏捷测试管理
Day03.实践打卡任务
完成敏捷测试管理
实践背景
在前面的练习中我们已经完成了凤凰商城 “迭代 4” 的需求规划,此时测试人员可以同步的 进行测试用例的编写,这样测试人员在迭代之初就可以进行软件测试工作。 在本实验中,您将学习如何使用 DevCloud 来管理项目的测试生命周期。本实验将指导您创 建有效设计的测试套件,以验证您的软件里程碑。您还将创建测试测试,这些测试测试可以 在每次发布时重复执行。
必做打卡任务
打卡任务要求
- 使用追溯视图进行需求驱动的测试
- 使用测试套件进行迭代测试规划
- 使用DevCloud 执行手工测试
准备工作
完成前两日实践打卡任务
必做任务实践步骤
打卡任务 1:使用追溯视图进行需求驱动的测试
通过本章节,您将学习如何通过追溯视图完成测试用例的设计,并在测试用例中细化测试步 骤,验证用户的使用场景。如下为需求驱动的测试用例编写操作指导。
- 需求驱动的测试用例编写
1.切换到需求追溯视图,点击测试>测试管理>追溯视图,如下图所示:
2.展开需求树,根据需求创建测试用例,如下图所示:
3.设置用例标题、模块、迭代、处理人等信息,如下图所示: 标题:门店网络查询 迭代:迭代 04
4.按照下表添加测试步骤以及预期结果
5.添加完成后,如下图所示:
6.按照同样的方式,完成下面两个用户故事的测试用例设计:
作为管理员应该可以添加限时打折
作为管理员应该可以添加团购活动
7.添加完成后,如下图所示:
打卡任务 2:使用测试套件进行迭代测试规划
DevCloud 允许团队将多个测试用例组织到测试套件中。测试套间用于跟踪迭代或里程碑中 的测试用例。这样,您可以看到特定迭代或里程碑的测试何时完成。接下来让我们把 “迭代 4” 的测试用例添加到新的测试套件中。
- 创建管理测试套件
1.点击 “测试”>“测试管理”>“测试套件”>“新建手工测试套件”,如下图所示:
2.输入套件名称 “迭代4”,并点击 “+” ,选择测试用例,如下图所示:
3.筛选迭代 “迭代4”,并点击确定,如下图所示:
4.全选,并点击确定,如下图所示:
5.点击确定,保存测试套件,如下图所示:
6.测试套件保存后,如下图所示:
打卡任务 3:使用DevCloud 执行手工测试
测试经理:经过开发跟运维的共同努力,现在我们的应用已经可以在迭代内持续的往测试环 境部署了,每天都会有新的功能部署到测试环境。 大家可以同步的进行软件测试工作,有问题大家及时的反馈,以保证我们迭代交付的质量。
通过本章节,您将学习如何创建测试套件,以及如何执行手工测试、创建缺陷,反馈测试结 果。
- 手工运行测试用例
-
点击 “测试”>“测试管理”>“测试套件”>“迭代4 测试套件”>点击执行,如下图所示:
-
当前列出了测试套件包含的所有手工测试用例,可以逐一执行,如下图所示:
-
测试人员按照测试步骤,逐个执行并反馈结果,如下图所示: 此测试用例执行失败,可以按照下图方式创建缺陷
-
点击创建缺陷后,系统会根据执行步骤,自动填充缺陷的重现步骤,方便开发人员重现 问题并快速修复,如下图所示:
-
缺陷完成后,保存测试结果,如下图所示:
-
按照同样的方式完成其他测试用例的执行,如下图所示:
-
设置测试套件结果为失败,如下图所示:
-
执行完成后,查看测试套件执行情况,如下图所示: 加粗样式
-
打开测试套件,并更新测试套件,如下图所示:
-
测试套件状态更新完成,如下图所示:
至此 day03 必做的实践打卡任务已完成。
打卡任务截图
点击 “测试” > “测试管理” > “测试总览” ,过滤 “迭代 04” 并截图,截图中需包含项目名称、 以及测试总览的图表:
截图示例:
截图验证点:
- 用户名 2. 确保迭代 04 的需求覆盖率、缺陷、用例通过率、用例完成率有数据。
选做打卡任务-用例自定义
测试经理:我已经设计完成用例,并分配给了对应的测试人员,但是现在我们的测试用例流 程中并没有用例设计完成的状态标识。 建议在用例的流程中添加 “已分配” 状态,用来表示用例已经设计完成,并分配给了对应的 测试人员,可以进行用例执行。
-
点击 “设置”>“测试管理”>“用例自定义”>“添加状态”,输入“已分配”,点击确定,如下图所 示:
-
添加完成,如下图所示:
-
回到“测试”>“测试用例”>过滤“迭代 4”用例,点击确定,如下图所示:
4. 全选 ”迭代 4“ 测试用例,点击“更多操作”>“修改”,如下图所示:
5. 将状态设置为 “已分配”,点击确定,如下图所示:
6. 状态修改完成,如下图所示:
3.1持续交付-测试规划思路
3.2动手实验-测试管理
根据需求创建测试用例
也可以创建没有与需求关联的测试用例
可以设定测试的结果是成功还是失败
可以针对用例创建一个缺陷
第4章 Day4 HE2E之编码和配置管理
Day04.实践打卡任务
使用 DevCloud 的 Git 代码托管支撑持续交付
实践背景
在本实验中,您将了解如何使用DevCloud 提供的 Git代码托管服务进行源代码管理,对【用 户故事 - 门店网络查询功能】进行开发,以及如何使用功能分支的方式进行代码的开发合 并。
必做打卡任务
打卡任务要求
- 使用 Git 修改和提交代码
准备工作 - 完成前三日实践打卡任务
实践步骤
在本练习中,您将学习如何创建,克隆和推送 Git存储库,并将本地修改同步到DevCloud 代码托管服务中。
- 配置你的 Git 账号
-
点击“代码”>“代码托管”>“设置我的HTTPS 密码”,如下图所示: 注意:你能够看到两个入口:《设置我的 SSH 密钥》与《设置我的 HTTPS 密码》,这代 表两种不同的访问 Git 仓库的方式 - ssh方式与 https 方式。大多数的git客户端,都同时支 持这两者。这里我们以HTTPS 为例
-
设置 HTTPS 密码,如下图所示:
特别注意 : 对于企业租户来说(IAM登录),用户名是: 租户名/用户名;
对于个人用户来说(非 IAM 登录),用户名是: 用户名/用户名;
HTTPS 的密码,并不等于华为云登录密码,需要另行设置,如果修改密码,您将收到确认 邮件。
- 克隆 Git 代码仓库
-
点击 “代码”>“代码托管”>phoenix-sample” 代码仓库,如下图所示:
-
当前页面列出了 “凤凰商城” 项目代码的相关信息,如下图所示:
-
点击 “克隆/下载”,将访问方式切换到“HTTPS”,如下图所示:
4. 点击快速复制按钮,将克隆地址复制到剪贴板,如下图所示:
5. 在获取地址后,在你的本机 Git 客户端,使用git clone 命令进行代码克隆即可,例如:
git clone <访问地址>
6. 克隆完成、输出如下:
Cloning into ‘phoenix-sample’…
remote: Counting objects: 9900, done.
remote: Compressing objects: 100% (60/60), done. remote: Total 9900 (delta 80), reused 112 (delta 64)
Receiving objects: 100% (9900/9900), 122.51 MiB>10.61 MiB/s, done.
Resolving deltas: 100% (2358/2358), done.
Checking out files: 100% (8982/8982), done.
注意:由于使用 HTTPS 的方式,第一次需要输入用户名和密码,参见“HTTP 方式账号密码 设置”。
- 提交代码,并链接到工作项
本章节中您将通过代码开发完成需求 “添加门店网络菜单”
-
使用 VS Code 开发工具,打开凤凰商城首页,并按照下图,在 179 行添加 “门店网络” 菜 单:
-
查看 “用户故事-作为用户应该可以查看、查询所有门店网络” 工作编号,如下图所示:
3. 在 VScode 里输入备注以及工作项编号,点击提交代码,如下图所示: 注意:请使用以下格式关联工作项:“fix #工作项编码 本次提交的注释信息”
4. 同步代码到远程仓库,如下图所示:
5. 在 DevCloud-代码托管中,点击“历史”,查看代码历史记录确认代码是否成功提交,如下 图所示:
6. 查看工作项,代码提交记录,如下图所示:
至此day04必做的实践打卡任务已完成。
打卡任务截图
请点击 “代码”>“代码托管”>“phoenix-sample”>“文件”>“历史” 并截图,截图中需包含项目名 称、以及您修改的代码历史记录截图
截图示例:
截图验证点:
- 项目名 2. 用户名 3. 提交历史记录,并验证提交者以及提交时间
选做打卡任务-使用 Git 分支+合并请求方式提交代码
- 背景:收到新的邮件通知
发件人:开发经理
收件人:凤凰商城开发团队
优先级:高
主题:凤凰商城开发模式 - 建议使用功能分支+合并请求的方式
Hi 兄弟们: 为了保证凤凰商城的稳定运行,我们需要有一个稳定的持续可用的分支“Master”,所以我不 建议任何人直接在 Master分支上进行代码开发。 请大家在后面的功能开发中统一使用功能分支+合并请求的方式进行功能的开发与合并。
而且我建议每一个功能分支的代码,必须经过团队的其他成员评审后,才可以进行合并。 谢谢大家的配合。
在本练习中,您将学习如何通过功能分支以及拉取请求的方式完成用户故事的开发,以及在 线代码检视。
- 启用分支保护
1.点击 ”设置“>”保护分支管理“>“新建保护分支”,如下图所示:
2.按照下图方式进行配置:
3.创建完成后,如下图所示:
- 管理分支策略
1.点击 ”设置“>”基本设置“>“合并请求设置” |“允许合入的最低评分为 3”>确定,如下图所示 通常我们会建议为3 分。如果不打算使用这个功能,可以设置为0 分。
- 创建功能分支
1.点击“分支”>“新建分支”>“输入分支名称” (这里一般建议采用 feature+"工作项"命名), 如下图所示:
2.分支创建完成,如下图所示:
- 新功能开发
1.本地支持 git pull 命令拉取最新代码
$ git pull
From https://codehub.devcloud.huaweicloud.com/*********
- [new branch] feature1828888 -> origin/feature1828888
Already up-to-date.
2.使用 git checkout命令切换分支
$ git checkout feature1470067
Branch feature1828888 set up to track remote branch feature1828888 from origin.
Switched to a new branch ‘feature1828888’
3.使用 git branch 命令,查看当前分支
$ git branch
- feature1828888
master
4.使用 vscode 修改代码添加新功能 1).修改 store-network.html 页面,添加北京分店地址,如下图所示:
- 北京分店:首都机场 1 号航站楼出发层靠右直行 888 米左右右侧
5.修改完成后,提交代码,如下图所示
6.提交并同步代码到服务器,如下图所示:
7.同步完成后,查看分支代码历史记录,如下图所示:
- 创建合并请求
1.点击“合并请求”>“新建合并请求”,如下图所示:
2.选择源分支以及目标分支,点击下一步,如下图所示:
3.设置合并请求 “标题”、“合并人”、“审批人”,如下图所示:
4.创建完成如下图所示:
- 社交评论
注意:用户可以在评论记录页,发表评论。也可以发表讨论。评论与讨论的区别在于:评论 无需回复并解决。而讨论是一个需要解决的问题。在评论记录里,可以看到差别。
1.点击评论记录,如下图所示:
2.输入内容,点击发表评论,如下图所示:
3.发表讨论,输入讨论内容,点击发表讨论,如下图所示:
4.发表后,如下图所示:
5.其他用户可以回复并解决,如下图所示:
6.回复并解决后,如下图所示:
- 代码检视以及评分
1.评审代码的人,可以在两个位置发表讨论:合并请求的评论记录页,以及点击文件变更, 针对某一行代码发起讨论。
2.在屏幕的右上角,有个评分窗口,点击可以展开,如下图所示: 普通开发者,能够±1 分,仓库的管理员,能够±2 分或±1 分。最终的总得分如果满足要求, 合并请求将能够被合并。
3.回到评论记录,如下图所示:
4.根据建议修改代码,如下图所示:
5.提交更改,如下图所示:
6.同步更改到服务器,如下图所示:
7.提交代码评分,如下图所示:
8.使用另一帐户提交评分(如何没有,请回到合并请求设置,将最低评分设置为2 分),如 下图所示:
9.勾选 “删除源分支”,并接受 “合并请求”,如下图所示:
10.合并请求已完成,如下图所示:
4.1持续交付-分支策略
main
develop
release
4.2动手实验-代码托管
用的是visual studio
第5章 Day5 HE2E之代码质量自动化检查
Day05.实践打卡任务
使用 DevCloud 静态代码检查确保编码规范有效落地
实践背景
项目经理:随着凤凰商城越来越庞大,线上出现的缺陷以及安全问题也越来越多,修复的成 本太大了,其实很多问题是可以在上线之前就应该发现以及修复的。 而且开发人员写代码也比较随性,没有统一标准,我们需要制定一些基本的标准,并对代码 进行持续的静态代码扫描,一旦发现问题立即在迭代内修复。这样才能保证我们上线的应用 相对可靠。
在本实验中,您将了解如何使用 DevCloud 提供的 “代码检查” 服务完成针对不同技术栈的 代码静态扫描,问题收集与修复。
必做打卡任务
打卡任务要求
- 为示例项目配置代码检查任务并执行
准备工作 - 完成前四日实践打卡任务
实践步骤
在本练习中,您将学习如何创建代码检查任务,并执行代码检查任务,完成应用的静态代码 检查。
- 创建代码检查任务
-
选择 “代码”>“代码检查”>“新建任务”,如下图所示:
-
输入任务名称 “phoenix-sample-code-check-java”,设置代码分支为master,选择检查 语言 Java && Python,点击确定,如下图所示:
-
配置完成后,如下图所示:
- 启动代码检查任务
- 点击启动任务,启动 Java 代码静态检查,如下图所示:
- 代码扫描中,会显示代码的进度百分比,如下图所示:
- 扫描完成后,如下图所示:
至此day05必做的实践打卡任务已完成。
打卡任务截图
点击“代码”>“代码检查” 并截图,截图中需包含项目名称、以及对应的代码检查任务
截图示例:
截图验证点:
- 项目名称 2. 用户名 3. 代码检查任务执行情况
选做打卡任务-分析代码检查结果并修复问题
在本练习中,您将学习如何根据代码检查结果分析代码中存在的问题,并解决代码问题。
- 分析代码检查报表
1.如下图所示,当前扫出了 9个代码问题
2.点击“源码问题”,切换到代码问题详情界面,如下图所示: 当前界面列出了问题的严重级别、状态、所属文件、以及检查规则等
3.切换到 Python扫描结果,鼠标移至最后一个问题,查看此问题 通过查看问题描述我们可以看到此问题是一个编码风格的问题,fieldStorage 这个变量的命 名规则不符合相应的正则表达式,但是在凤凰团队内部,其实并没有对此有严格的要求,我 们可以在此忽略此问题
4.点击具体错误,进入到错误详情界面,可以通过点击忽略按钮,忽略此问题,如下图所示:
5.输入 “处理意见” 以及勾选 ”忽略统一规则检查出的错误“,如下图所示:
6.回到 “检查结果概述”,查看问题状态汇总已经发生了变化,如下图所示:
7.继续查看代码问题,查看第五个问题,如下所示: 此问题是在代码里Connection没有关闭可能会引起的资源泄漏问题,属于非常严重的问题, 建议快速修复掉
8.可以参考修改建议对代码问题进行修复,如下图所示:
第6章 Day6 HE2E之持续交付之CI和CD
Day06.实践打卡任务
使用 DevCloud 搭建容器化 CI/CD 配置
实践背景
克里斯(应用程序开发副总裁):最近一次部署又出问题了,居然是因为我们的 JDK 版本 升级了,在环境清单里没有标示清楚,运维的兄弟气疯了。 我跟比尔一起聊了下,达到了如下共识:
1.首先开发部跟运维部应该紧密合作,建立共同的目标和共同解决问题的机制。
2.开发的工作与运维的工作应该解耦,运维更多是将 IT 运维任务转变为自助、自动化服 务,把基础架构的配置能力交给开发,因为没有人比我们更清楚应用的运行环境。
3. 所有我们首先需要保证每个环境(开发调测环境、测试环境、QA 环境、生产环境)都 保持一致, 避免因为环境不一致导致的各种问题。后面统一使用Docker的方式将应用与 环境统一打包到镜像保持环境一致。
4. 我们还需要持续不断的对应用进行验证,确保应用总是处于可部署的状态并建立持续反 馈回路,防止问题代码进入生产环境。
必做打卡任务
打卡任务要求
1.使用自动化编译提高代码质量验证速度
2.配置持续集成并通过提交代码触发自动化编译
3.使用自动化部署实现一键发布
准备工作
1.完成前五日实践打卡任务
2.激活容器镜像服务(SWR)
3.开通弹性云服务器(ECS)
- 激活容器镜像服务(SWR)
1.进入华为云容器镜像服务 点此进入
2.点击 立即使用
3.弹出页面中,点击 同意授权
至此,SWR 服务已激活,SWR 服务开通后提供 10GB 外网下载流量和10GB 镜像存储空 间。
- 开通弹性云服务器(按需购买)
1.进入弹性云服务器 ECS 主页 点此进入
2.点击立即购买,如下图所示:
3.请严格按照下面表格进行主机配置
4.配置完成确认订单无误后,点击提交,如下图所示:
- 开通弹性云服务器(优惠套餐购买)
1.满足连续3 天打卡的用户,在获取优惠套餐购买资格后,小助手会私信提供购买链接, 直接下单即可完成ECS 开通。
- 配置弹性云服务器(安装 Docker&Python)
-
点击控制台>弹性云服务器ECS,查看主机信息,如下图所示
-
查看主机 IP 地址,如下图所示:
-
使用 SSH 登陆云主机
ssh root@<ip 地址> -
执行以下命令,安装程序运行依赖工具 Python\Docker\Docker-Compose
git clone https://codehub.devcloud.huaweicloud.com/DevOpsylcsxm00001/phoenix-storag
e.git
cd phoenix-storage
sh install.sh -
点击安全组>更改安全组规则,添加入站规则 - 允许访问 5000 以及 5001 端口,如下 图所示:
至此 day06 实践任务的准备工作已完成,接下来进入实践环节。
必做任务实践步骤
打卡任务 1:使用自动化编译提高代码质量验证速度
在本练习中,您将学习如何创建 “编译构建任务”,完成应用的 Docker 镜像打包以及推 送。这里我们已经提前创建好了编译构建任务,为了加深用户对构建定义的理解,下面将 解释如何进行配置。
- 查看编译构建任务
1.点击 ”构建&发布“>“编译构建” 编辑已存在的构建定义,如下图所示:
2.点击基本信息,可以编辑构建任务的名称,如下图所示:
3.点击 “源码选择” 可以设置源码仓库、分支,如下图所示:
4.点击 “参数设置” 设置自己的SWR 仓库服务器以及组织,如下图所示:
临时账号密码获取方式,如下图所示 -u 为用户名 -p 为密码 最后字符串为 服务器地址 如果要获取有效的长期的docker login 指令 请参考以下文档 https://support.huaweicloud.com/usermanual-swr/swr_01_1000.html
- 设置编译构建任务步骤
接下来让我们分别看下每个构建步骤的是如何设置的:构建模块提供了不同类型的操作步 骤,用户可以根据实际需求选择。 步骤一:编译Vote,并推送镜像到SWR(私有镜像仓库)
步骤二:编译Result,并推送镜像到 SWR(私有镜像仓库)
步骤三:使用 Maven 获取依赖包
步骤四:编译 worker,并推送镜像到 SWR(私有镜像仓库)
步骤五:创建 postgres 以及 redis Dockerfile
步骤六:推送 postgres 镜像
步骤七:推送 redis 镜像
步骤八:替换SWR 地址、版本以及压缩部署文件
sed -i s/docker-server/
d
o
c
k
e
r
S
e
r
v
e
r
/
g
.
/
d
o
c
k
e
r
−
s
t
a
c
k
.
y
m
l
s
e
d
−
i
s
/
d
o
c
k
e
r
−
o
r
g
/
{dockerServer}/g ./docker-stack.yml sed -i s/docker-org/
dockerServer/g./docker−stack.ymlsed−is/docker−org/{dockerOrg}/g ./docker-stack.yml
sed -i s/image-version/${BuildNumber}/g ./docker-stack.yml
tar -zcvf phoenix-sample-k8s.tar.gz ./kompose
tar -zcvf docker-stack.tar.gz ./docker-stack.yml
步骤九:发布软件包
- 修改镜像组织名称
请按照下图方式,将所有推送镜像任务的组织名称改为您自己的"仓库地址" 以及 “组织名 称”
- 执行板梯构建任务
1.配置完成后,点击 “开始构建”,如下图所示:
2.构建执行中,如下图所示:
3.构建完成,如下图所示:
4.点击 “构建&发布”>”发布“ 查看发布结果,如下图所示:
打卡任务 2:配置持续集成并通过提交代码触发自动化编译
在本练习中,您将学习如何启动持续集成,实现代码变更后自动触发应用的Docker 镜像 打包以及推送。
- 持续集成配置
1.点击源码选择,勾选提交代码触发执行,点击保存,如下图所示:
- 持续集成执行计划配置
打卡任务 3:使用自动化部署实现一键发布
在本实验中,您将学习如何使用 DevCloud 提供的 “部署服务” 完成应用的自动化部署。
- 持续部署配置
为了方便用户进行测试、我们已经提前帮您配置好了部署任务,您只需要稍加修改就可以 使用了,下面章节将引导你一起查看构建定义的配置方式
1.编辑已存在的部署任务, 选择任务基本信息中,描述内容为“PhoenixDemo-standalone” 中的那个任务, 点击构建&发布>部署>编辑图标,如下图所示:
2.设置部署任务名称以及关联的项目,部署任务名称改为您可识别的名称即可,该名称在 项目内不能重复,项目为部署任务所属项目。
3.切换到 “部署步骤” 选项卡,选择 “选择部署来源”,步骤显示名称可设置为您可以识别 的名称,也可以默认不改。
4.选择主机组,主机组是指您的包要下载到哪个主机组,主机组是由一组主机组成的,如 果此处没有主机组,您就需要点击“创建主机组”,如下图所示:
5.如下图所示,点击 “新建”。
6.给主机组设置名称、主机组下的主机的操作系统类型以及描述,点击保存就创建了主机 组,如下图所示:
7.接下来是要给该主机组添加主机,点击 “+”。
8.设置主机信息,填完以下信息,点添加进行添加主机,如下图所示:
9.主机添加完成后,在复选框勾选主机,然后点击 “连通性验证” 按钮,验证主机是否能连 通。
10.回到部署任务编辑界面,为该步骤选择刚才创建的主机组。
11.选择源类型为“构建任务 - phoenix-sample-ci”,如下图所示:
12.编辑 “解压文件” 步骤,步骤显示名称同样设置为可识别的名称,也可以默认不改,其 他参数参考下表:
13.按照以上的方式设置、选择主机组,该步骤的主机组跟“选择部署来源”是同一个主机 组,所以选择刚创建的主机组即可。
14.通过部署变量设置 “SWR镜像仓库” 账号信息,点击 “参数设置”,并按照下表进行参 数设置、参考下表进行设置。(删掉系统自带的 serviceName参数)
参数获取方式,如下图所示 -u 为用户名 -p 为密码 最后字符串为 服务器地址
15.通过Shell 命令,一键启动应用,如下图所示:
16.按照以上同样的方式设置和选择主机组信息。
17.全部编辑完成后,点击保存按钮。
18.执行部署
19.等待部署完成
20.部署完成
21.打开凤凰商城客户端 http://ip:5000
21.打开凤凰商城管理端 http://ip:5001
- 凤凰商城应用测试
1.查看产品列表,点击 “LIKE” 按钮,如下图所示:
2.验证管理端界面数据统计,如下图所示:
至此day06必做的实践打卡任务已完成。
打卡任务截图
请点击“构建&发布”>“部署”>“phoenix-sample-deploy”部署任务 并截图,截图中需包含 用户名以及部署任务的执行结果。
截图示例:
截图验证点:
- 用户名 2. 部署任务执行结果
选做打卡任务-使用内置的Maven 任务改进自动化编译
背景
项目经理:Alex,凤凰商城的持续集成任务,每次执行事件都太长了,分析下什么原因? 尽快反馈给我。
Alex: 主要是我们凤凰商城每个服务中都有外部依赖包,包括(maven、npm、nuget、 pip)等,这些服务编译过程中都要先下载依赖包、而且由于网络问题,甚至会下载失败导 致持续集成失败!
项目经理:OK,那有没有什么好办法解决这个问题?
Alex: 这些依赖包可以使用我们自己的镜像源,这样速度会就可以达到数量级的提升!
项目经理:太棒了,马上执行!
在本练习中,您将学习如何使用华为云提供的 “开源镜像站” 服务提高依赖包获取速度, 提高自动化编译效率。
内置任务自动镜像源
用户可以通过两种方式使用华为镜像源: 方式一:使用了系统内置的 Maven构建、Npm 构建、PyInstaller、等任务,系统会自动 通过华为镜像源获取相应的依赖包。 方式二:在配置文件里直接将镜像源设置为对应的华为仓库地址
1.方式一:如下图所示:
2.方式二:Python 配置方式参考
3.方式二:NPM 配置方式参考
4.方式二:Nuget 配置方式参考
6.1持续交付–容器
持续交付的挑战以及解决思路
包管理组件
微服务:团队之间的协作,不再有依赖
基础设施即代码
Docker对于DevOps的价值所在
NodeJs
Java
Python
允许在同一个硬件上虚拟出不同的操作系统来,在不同的操作系统上安装不同的应用,但是浪费了很多磁盘容量
养宠物:
养牛:
6.2动手实验-持续集成&持续部署
5个组件所以五个镜像
接下来看部署
docker-components
第7章 Day7 HE2E之持续交付之流水线
Day07.实践打卡任务
使用 DevCloud 流水线完成端到端流程串接
实践背景
克里斯(应用程序开发副总裁):凤凰商城的每个环节已经越来越标准化了,但是每一部分都 相对独立,都是半成品,不能交付业务价值。 如果我们能将每一个环节(构建、发布、测试、部署)有效的串联起来形成一套完成的持续交 付流水线,才能真能提高软件的发布效率与质量,持续不断的创造业务价值。
必做打卡任务
打卡任务要求
- 配置流水线串接代码检查,编译构建和自动化部署步骤
准备工作 - 完成前六日实践打卡任务
必做任务实践步骤
在本练习中,您将学习如何创建 “流水线” 任务,完成应用程序持续交付流水线的搭建。
创建持续交付流水线
1.点击 “构建&发布”>“流水线”>“新建流水线”
2.设置流水线名称为 “phoenix-sample-pipeline”
系统默认预设了不同的开发场景,选择不同的场景系统会自动调整不同的流水线模版: 基本、微服务、后端服务、Web前端、APP、软件包部署、其他
3.添加静态代码检查阶段,点击黄色 “+” 为了保证我们编译的应用是基于可靠代码基础上进行的,所以我们建议将代码检查阶段创建 到构建阶段之前,如下图所示:
4.设置阶段名称为 “代码检查”,执行条件设置为阶段自动执行、执行条件设置为 “串行执行” 执行条件说明,请参考以下表格:
执行方式说明,请参考以下表格:
5.阶段添加完成后,需要在阶段里添加对应需要执行的任务,点击默认任务,如下图所示:
6.选择任务类型为 “代码检查”,选择我们已经创建好的 Java 代码检查任务,如下图所示:
7.按照上面同样的方式,完成Python 任务的添加
7.配置编译任务,如下图所示:
9.移除发布仓库步骤(暂不需要此阶段),点击确认,确认移除 “发布” 阶段如下图所示:
11.添加新阶段,这里选择添加自定义阶段,如下图所示:
12.点击编辑新阶段的阶段名称,如下图所示:
13.设置新阶段的阶段名称为 “环境部署”,如下图所示:
14.编辑部署阶段任务,如下图所示:
15.选择任务类型为 “部署”,选择我们已经创建好的部署任务,如下图所示:
16.全部编辑完成后,点击保存。保存流水线
触发持续交付流水线
1.点击执行,触发流水线执行,如下图所示:
2.点击确定,执行流水线
3.执行状态已变为 “运行中”,如下图所示:
4.当前列出了流水线的执行状态: 背景颜色 执行状态
绿色 表示执行成功 红色 表示执行失败 蓝色 表示执行中 灰色 表示未执行
5.完成后,如下图所示:
至此day07必做的实践打卡任务已完成。
打卡任务截图
请点击“构建&发布”>“流水线” 并截图,截图中需包含项目名称、用户名以及流水线任 务的执行结果
截图示例:
截图验证点:
- 项目名称 2. 用户名 3. 流水线执行结果
选做打卡任务-添加质量门禁
为了控制代码的质量,我们要求代码必须经过扫描,并且错误数量控制在合理范围内,才允 许发布。通过添加质量门禁可以有效的自动化控制流程。
1.在代码检查阶段下,点击 “+”,点击门禁,点击“创建门禁”
2.开启 “CodeCheck 门禁”,设置门禁阀值为 “5”,点击保存,如下图所示:
3.点击保存,如下图所示:
4.触发流水线,如下图所示:
选做打卡任务-实现代码变更触发的持续交付流水线
在本练习中,您将学习如何创建实现代码变更自动触发持续交付流水线任务,完成应用的自 动化测试以及部署。
更新持续交付流水线
1.设置代码检查门禁 数量为 10,如下图所示:
触发持续交付流水线
健康度查看
通过健康度可以统计流水线调度的不同任务的执行健康程度以及执行的结果统计:
1.点击 “健康度”,如下图所示:
2.查看健康度统计情况,如下图所示:
选做打卡任务-流水线配置高级功能
添加人工审核
在环境部署之前添加人工审核
1.在 ”环境部署“ 阶段点击 “添加任务”
2.任务类型选择 “流水线控制”,并选择 “人工审核”
3.拖动 “流水线控制” 任务到 “部署” 任务上方,用于控制流程,保证必须人工审核通过才 能继续进行部署任务的执行
4.保存流水线配置,如下图所示:
5.在线修改代码触发流水线任务
6.流水线在执行到 “人工审核” 任务时,会发送邮件通知给对应审核人员,要求进行部署审 核,如下图所示:
7.点击邮件链接进入到审核窗口,如下图所示,点击审核
8.点击审核后,继续执行 “部署任务”,如下图所示:
9.流水线执行完成,如下图所示:
动手实验-流水线