华为云凤凰商城项目实践实验二——持续开发与集成

2023-10-22 10:30

本文主要是介绍华为云凤凰商城项目实践实验二——持续开发与集成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

2.1 代码托管

2.1.1使用 CloudIDE 修改和提交代码

2.1.2使用 Git 分支+合并请求方式提交代码并进行代码检视

2.1.3合并请求(登录模块)

2.2代码检查确保编码规范

2.2.1为示例项目配置代码检查任务并执行

2.2.2分析代码检查结果并修复问题

2.2.3 配置和管理代码检查规则集

2.3使用自动化编译提高代码质量验证速度

2.3.1编译构建并完成应用的镜像打包推送

2.3.2配置持续集成并通过提交代码触发自动化编译

2.3.3使用开源镜像站服务改进自动化编译


2.1 代码托管

目的:了解如何使用 CodeArts 提供的代码托管服务进行源代码管理,并对 Story “作为用户应该可以查看、查询所有门店网络”进行开发,以及如何使用功能分支的方式进行 代码的开发合并。熟练掌握如何使用代码托管服务进行代码管理,如何配置分支策略。

2.1.1使用 CloudIDE 修改和提交代码

学习如何通过 CloudIDE 完成需求"添加门店网络菜单"的代码开发。

①登录 CodeArts,单击"工作>需求管理",进入"Backlog"页面。找到 Story"作为用户 应该可以查看、查询所有门店网络",记录该 Story 的编号。

点击进入后观察到该story编号为#64966574

②单击左侧导航栏"代码>代码托管",单击代码仓中的phoenix-sample,进入样例项目预置的代码仓库

单击右上角“IDE Online"进入CloudIDE服务。

④修改代码。等待 CloudIDE 加载完毕后,在左侧导航中找到前端界面代码文件" /vote/templates/index.html"并打开,在 179 行添加菜单"门店网络"。

④提交修改至代码仓库。单击左侧边栏“源代码管理” ,打开 Git 功能。单击修改文件后方的图标 (git add),将修改内容添加进提交内容当中。

在输入框中输入提交信息:"fix #工作项编码 本次提交的注释信息" (fix #工作项编码 格式要注意,若不一致则不能将提交信息关联到下一个步骤的提交历史查看 )。

单击打勾图标 (git commit)提交本次修改。单击图标... ,在下拉列表中单击"推送",推送代码到代码仓库。

⑤查看代码提交记录。返回"代码托管"页面,在 phoenix-sample 代码仓库中选择"动态"页签,即可查看是否提交成功。

跳转至"工作>需求管理>Backlog"页面,单击 Story"作为用户应该可以查看、查询所有门店网 络"。在"关联"页签中,单击"代码提交记录",也可看到相应提交记录。

⑥预览调试。回到 CloudIDE 页面,打开 index.html,点击右上角按钮,可预览前端界 面。

打开 vote 目录下的 app.py 源文件

右下角出现“Linter pylint is not installed”,点击 “Install”安装

点击左下角选择“Python 3.8.x”版本解释器

⑦修改 Dockerfile。打开 vote 下 Dockerfile 文件,修改“FROM python:2.7-alpine”为“python:3.7-alpine”。

⑧终端窗口安装两个运行必须模块:

pip install flask redis --user

⑨打开app.py替换原有 Python2.7.x 版本代码

导入 import importlib

修改 reload(sys)为 importlib.reload(sys)

删除 sys.setdefaultencoding('utf-8')

⑩修改完成后右键app.py单击"在终端中运行Python文件"

出现三行提示表明安装完成

将 app.py 中第 64 行代码中的端口号改为 8088(8000-9000 皆可)

点击右上角运行图标 ,此时前端程序已执行。

再将对应端口号开放,允许访问:点击Send ,响应后出现 WebDeBug 页签。

本步骤完成端口需改回 80 端口。

2.1.2使用 Git 分支+合并请求方式提交代码并进行代码检视

学习如何通过功能分支以及拉取请求的方式完成用户故事的开发,以及在线代码检视。

①将 master 分支设置为受保护分支。进入项目,单击"代码 > 代码托管", 进入代码托管服务。单击phoenix-sample,进入代码仓库。

②点击“设置”选择策略设置中的“保护分支”

③单击"新建分支保护",根据需要在弹框中选择配置,单击"确定"保存。

④管理分支合并策略。进入代码仓库,选择"设置"页签,在左侧导航中单击"策略设置 > 合并请求"。

选择合入机制为“打分机制”,可以设置为"0"。单击"提交"保存。

⑤创建分支并进行新功能开发。进入代码仓库,选择"代码"页签,选择“分支”

在“我的分支”中单击右上角"新建+",在弹框中输入分支名称"feature工作项编号" (注意:不要有+号等特殊符号) 命名分支,单击"确定"保存。

⑥用 CloudIDE 打开代码仓库,选择新创建的分支进入(如果是已打开的 CloudIDE 界面, 可单击页面左下角分支名称,在页面上方的下拉列表中选择刚刚创建分支)。

可以看到左下角分支名变成了"master"

2.1.3合并请求(登录模块)

新增登录功能为例,使用合并请求

①创建合并请求,进入“代码托管”,选择合并请求页签,单击“新建”。源分支选择刚刚创建的分支,与目标分支选择"master",单击"下一步"。

输入标题、描述(选填),选择合并人、评审人,单击"确定"完成。"合并人"即接受合并请求的人,"评审人"是由合并发起人邀请参与的评审者。对于不合格的合并请求,管理员可以关闭。在评分不够时,无法完成该合并请求。

②代码检视以及评分,评审人进入代码仓库后,在"合并请求"页签中找到需要评审的合并 请求,单击该请求,查看合并请求详情。评审者可以在"合并请求"页签中发表评审意 见,对合并请求进行评分。

也可以在文件变更页签,针对某一行代码发表讨论。评论与讨论的区别在于:评论无需回复并 解决。而讨论是一个需要解决的问题。在评论记录里,可以看到差别。

开发人员在"合并请求"页面可查评论/讨论记录。

2.2代码检查确保编码规范

随着凤凰商城越来越庞大,线上出现的缺陷以及安全问题也越来越多,修复的成本太大了,其实很多问题是可以在上线之前就应该发现以及修复的。 而且开发人员写代码也比较随性,没有统一标准,我们需要制定一些基本的标准,并对代码进 行持续的静态代码扫描,一旦发现问题立即在迭代内修复。这样才能保证我们上线的应用相对可靠。

将了解如何使用 CodeArts 提供的"代码检查"服务完成针对不同技术栈的代 码静态扫描,问题采集与修复。

2.2.1为示例项目配置代码检查任务并执行

学习如何编辑并执行代码检查任务,完成应用的静态代码检查

①编辑代码检查任务包含语言。进入项目,单击页面上方导航"代码 > 代码检查",进入代码检查服务。单击代码检查任务"phoenix-codecheck-worker",进入"代码检查详情"页面

②选择"设置"页签,在页面左侧导航中单击"规则集"。规则集中默认包含的语言是" Java"。

单击“重新获取代码仓库语言”

在刷新的列表中将 Python 语言对应的开关打开。

③启动代码检查任务。进入代码检查任务"phoenix-codecheck-worker"的"代码检查详情"页面。单击"开始检查",启动代码检查任务。

当页面提示"分支"master"最近一 次检查成功!",表示任务执行成功。

2.2.2分析代码检查结果并修复问题

通过本节,学习如何根据代码检查结果分析代码中存在的问题,并解决代码问题。

①分析代码检查报表。进入代码检查任务"phoenix-codecheck-worker"的"代码检查详情"页面。成功执行代码检查任务,查看检查结果。

②在代码检查任务"设置 > 质量门禁"页面中,默认配置"致命问题数<=0"和"严重问 题数<=0",从上图可以看出,检查结果不符合门禁要求,因此门禁检查结果显示为" 不通过"。

③单击"代码问题"页签,页面中列出问题的严重级别、状态、所属文件等信息。

④可根据需要对代码进行修改。例如:下图中的问题,是在代码里 Connection 没有关闭可 能会引起的资源泄漏问题,属于非常严重的问题,需要尽快修复。

⑤单击问题卡片"待处理”,下拉状态栏出现“已解决”和:忽略问题“

点击问题卡片多选框,可对问题进行能批量处理。

点击问题帮助,可查看系统对此问题的修改建议。

2.2.3 配置和管理代码检查规则集

①创建自定义检查规范。进入代码检查服务,选择"规则集"页签,在下拉列表中选择" Java"。

在过滤出的列表中找到规则集"关键检查规则集"单击"复制"图标。

在弹框中输入新规则集名称为"phoenix-java-rule-set",单击"确定"保存。

②系统自动进入新建规则集的"规则集配置"页面。通过搜索框搜索规则"循环",取消勾选此规则,单击"保存"。由于这里凤凰团队采用了取巧的方案临时支持功能的展示,暂时可以关闭此问题

③启用自定义检查规范。进入代码检查任务"phoenix-codecheck-worker"的"代码检查 详情"页面。选择"设置"页签,在页面左侧导航中单击"规则集"。在 Java 语言规则集 中,勾选规则集"phoenix-java-rule-set"。

④启动代码检查任务,任务成功执行后,再次查看检查结果。此时的检查结果忽略了之前取消勾选的规则,检查出来的问题是团队关心的问题,应该尽快修复掉。

2.3使用自动化编译提高代码质量验证速度

如何创建 "编译构建任务",完成应用的 Docker 镜像打包以及推送。

如何启动持续集成,实现代码变更后自动触发应用的 Docker 镜像打包以及推送。

如何使用华为云提供的"开源镜像站"服务提高依赖包获取速度,提高自动化编译效率。

2.3.1编译构建并完成应用的镜像打包推送

节以任务"phoenix-sample-ci"为例,学习如何通过"编译构建"服务完成应用的 Docker 镜像打包以及推送。

①查看编译构建任务。进入项目,单击页面左侧导航"持续交付 > 编译构建",进入编译构建服务。找到编译构建任务"phoenix-sample-ci"。

②单击"phoenix-sample-ci"右侧”...",进入"编辑"页面。

③点击"基本信息"栏,选择源码仓库"phoenix-sample", 分支"选择"master"

④配置 SWR 服务。项目应用镜像存放需要使用到华为云容器镜像服务 (SWR) ,因此需要首先配置 SWR 服务。点击"构建步骤"栏,找到"华为云容器镜像服务"并点击

此时进入到"容器镜像服务"主页,点击立即使用;

检查页面左上方的"区域"列表,选择与编译构建任务所在区相同的区域。

单击右上角"登录指令",系统生成并弹框显示 docker login 指令。

指令中,-u 之后的字符串为用户名,-p 之后的字符串为密码(此为临时用户名和密码, 24 小时刷新,隔天使用需重新查看用户名、密码;最后的字符串为 SWR 服务器地址,此地址即为后续步骤 5 中的参数 dockerServer。

在左侧导航栏中选择"组织管理",进入"组织管理"页面。单击右上角"创建组织",在弹 框中输入组织名称"hi-pheonix" (或自定义,此名称全局唯一),单击"确定"保存。这里的组织名称,即为后续步骤 5 中的参数 dockerOrg。

⑤返回 CodeArts 页面,选择"参数设置"页签,编辑以下两个参数。

⚫ dockerOrg:输入在步骤 4 中创建的组织。

⚫ dockerServer:输入在步骤 4 中记录的内容。

请务必确保这参数 dockerOrg、dockerServer 的输入值是正确的。

⑥单击"保存并执行",启动编译构建任务。

系统自动跳转至"编译详情"页面,可以查看任务执行进展。当出现以下页面时,表示任务执行成功。

请记录"构建成功"字样前面的数字串(即任务的构建编号),该数字串为构建任务中的系统预定义参数 BuildNumber, 在后续步骤 10 查看镜像详情中,镜像版本即此数字串。

⑦单击页面左侧导航"制品仓库>软件发布库 ",进入发布服务。列表中可找到下图所示的两个 文件夹。

⑧进入 SWR 控制台,在页面左侧导航选择"我的镜像"。列表中可看到 5 个镜像,镜像的所属组织为实验开始创建的组织,版本数如下图所示。

⑨在列表中单击"worker"查看镜像详情。在镜像列表页签中找到最新版本镜像,镜像版本 与最新一次构建任务的执行编号一致,执行编号的查看方法请参考步骤 6。

2.3.2配置持续集成并通过提交代码触发自动化编译

通过本节,学习如何启动持续集成,实现代码变更后自动触发应用的 Docker 镜像打包以及推送。

①持续集成配置。进入编译构建任务"phoenix-sample-ci"的"编辑"页面,选择"执行 计划"页签,打开"提交代码触发执行"开关,单击"保存"。

②持续集成执行计划配置。在"执行计划"页签,开启“定时执行”,根据需要设置定时执 行计划,单击"保存"。

2.3.3使用开源镜像站服务改进自动化编译

通过本节,学习如何使用开源镜像站服务提高依赖包获取速度,提高自动化编译效率。 

通过以下两种配置方式,可以在执行编译构建任务时自动获取开源镜像站中的镜像:

⚫ 方式一:使用系统内置的 Maven 构建、Npm 构建、PyInstaller 构建步骤,系统会自动通过 开源镜像站获取相应的依赖包。

⚫ 方式二:将镜像源设置为对应的开源镜像站仓库地址配置在代码仓库的配置文件中,查看 方式"代码>代码托管>phoenix-sample>文件"。配置方式有以下三种:

①Python 配置方法

②NPM 配置方法

③Nuget 配置方法

这篇关于华为云凤凰商城项目实践实验二——持续开发与集成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/260859

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t