云社区 > 云博客 > 博客详情
云社区 > 云博客 > 博客详情

node.js on 华为云DevCloud

DevCloud 发表于 2018-06-13 14:36:5306-13 14:36
DevCloud 发表于 2018-06-13 14:36:5306-13 14:36
0
0

【摘要】 本文章主要帮助想要或者正在将node.js项目迁移到华为软件开发服务DevCloud中的用户,将本地node.js项目迁移到云上。

文章目的

本文章主要帮助想要或者正在将node.js项目迁移到华为软件开发服务DevCloud中的用户,将本地node.js项目迁移到云上。

概述

2.1 node.js

node.js

node.js是一个Javascript运行环境(runtime),发布于20095月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。 Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。

V8引擎执行Javascript的速度非常快,性能非常好。 Node.js是一个基于ChromeJavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。 Node.js使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。 (摘自百度百科)

 

2.2 华为软件开发服务DevCloud

官网入口:http://www.huaweicloud.com/devcloud/

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

应用软件开发服务的流水线功能可以帮助node.js开发者实现一键自动化开发部署,其中需要应用到项目管理,代码仓库,代码检查,编译构建发布,部署等功能。

项目管理

软件开发服务提供基于Scrum和看板协作两种模式的项目管理服务,用户可以在项目管理中进行项目规划,工作项跟踪,文档及百科管理等工作。并可以通过预定义好的燃尽图表等常用报表,对项目进行实时监控,及时掌握项目进度,提前管控风险。

代码仓库

在进行开发工作过程中,在华为软件开发服务的代码仓库中,新建一个云端代码仓库,然后通过本地git端将代码与云端托管仓库同步,通过本地IDE进行开发

代码检查

开发任务进程中,随时可以进入到华为软件开发服务的代码检查功能中,进行代码检查,新建代码检查任务,选择与项目匹配的代码检查规则进行代码检查。

在问题列表中查看代码检查结果,针对问题描述对问题进行修改,修改完毕后,再次执行代码检查任务,查看任务执行结果,形成代码质量改进闭环。

编译构建

通过代码检查任务,将代码问题都修复完毕后,我们开始进行编译构建工作。

本项目中,前端后端均采用云端编译构建进行打包构建,同时方便后续将代码直接应用自动化部署功能部署到云服务器中。

发布

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

部署

当代码构建打包成功并归档到发布仓库后,可以进行部署工作。部署任务一共分为三部分工作,分别是主机授权,编辑模板,执行部署。

2.3 弹性云服务器(ECS)

本文中的node.js项目是一个B/S结构的Web项目, 需要部署服务器和关联数据库,这里使用的是华为弹性云服务器ECS

弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率。

环境准备

3.1 华为云账号

华为云官网:http://www.huaweicloud.com

点击右上角注册注册华为云账号,账号适用于所有华为云产品。

 图片1.png

 图片2.png

3.2 Git客户端

使用git托管代码,在本地需要安装git客户端,与云上代码仓库建立连接

安装及使用git客户端,请参考Git on DevCloud 

习惯使用TortoiseGit用户请参考TortoiseGit on DevCloud

安装及使用TortoiseGit客户端

备注本文使用的是TortoiseGit

3.3 已经创建好的项目

创建项目 

 图片3.png

spacer.gifspacer.gif华为云官网首页-产品-软件开发服务进入华为软件开发服务首页

图片4.png 

点击右上角新建按钮新建项目

图片5.png 

输入项目名称,选择开发流程,输入项目描述,点击“新建”按钮即完成了一个项目的创建。Tips:开发流程Scrum流程和精简流程,Scrum流程是标准的敏捷开发流程,精简流程是经过精简的敏捷开发流程(工作项不按EpicFeaturebacklog层级,本文demo选择的是Scrum流程。

图片6.png 

点击进入创建的项目,左侧菜单栏展示软件开发服务在软件开发过程中为开发者提供的各个服务,包括仪表盘工作代码构建&发布测试Wiki文档、和“设置”默认展示backlog工作项界面。

项目规划

图片7.png 

在项目计划里思维导图的形式进行项目的需求分析细化将工作项分配给具体人员,并配置工作项基本信息。

工作项

图片8.png 

EpicFeaturebacklog可以查看和操作不同层级的工作项(修改状态,指定迭代等)


仪表盘

图片9.png 

仪表盘界面可以通过燃尽图表等常用图表,对项目进度和问题进行实时监控,及时掌握项目进度,提前管控风险。

文档百科

图片10.png 

“文档”里可以上传下载项目相关的文档作为知识的沉淀,在百科可以添加项目相关的词条便于产品知识学习。

3.4 弹性云主机环境配置

node.js,RedisMongoDB的安装方法:

node.js安装方法请参考:node.js安装配置

Redis安装方法:Redis安装配置

MongoDB安装方法:Linux下安装MongoDB方法

 

研发场景概览

4.1 示例项目概述

1.项目名称:NodeClub社区系统

2.项目简介:Nodeclub 是使用 Node.js  MongoDB 开发的社区系统,界面优雅,功能丰富,小巧迅速, 已在Node.js 中文技术社区 CNode(http://cnodejs.org) 得到应用,在此项目中我们就演示如何应用软件开发服务搭建这个社区系统

3. 开发程序语言:node.js

4.项目类型:使用 Node.js  MongoDB 开发的社区系统

5.开发环境node.js

6.部署环境:Linux

7.部署方式shell部署

图片11.png 

典型B/S架构系统,用户通过互联网访问系统,客户端处理用户操作及数据库读取或写入数据。

4.2 通用客户场景

图片12.png 

目前软件开发过程中可以使用一些免费或者付费的工具帮助我们更高效的进行软件开发,存在以下缺点:

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

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

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

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

代码管理场景

华为软件开发服务提供基于Git的代码托管仓库,仓库提供可视化的管理界面,node.js开发者可将自己的node.js工程代码上传到此仓库中进行代码托管。

代码仓库

代码仓库首页点击“新建仓库”,创建代码仓库。代码仓库支持文件在线编辑,统计提交记录,代码贡献度统计等多种功能,满足各类开发者的需求。

图片13.png

代码仓库在创建的时候有多种选项:普通新建、模板新建、导入仓库(建议选择普通新建);还可以根据自己的需求,选择仓库是否公开:私有仓库安全性好,非授权人员无法访问;公有仓库将代码变成开源的,放到代码广场(下文有具体的功能描述)中进行分享,其他用户可以借鉴。

图片14.png 

普通新建

普通新建是建立一个只有readme文件的空仓库。

模板新建

模板新建是创建一个具有简单Demo的代码仓库,Demo的语言类型可选,包括JavaCC#等。

导入仓库

导入仓库可以通过复制仓库地址,将其他仓库的代码导入到当前项目中。

仓库的是否公开也可以在代码仓库的“设置”---“基本设置”中进行切换。

图片15.png 

下载项目代码:

图片16.png

进入软件开发服务代码广场在搜索栏中输入要搜索的代码仓库名称本项目demo代码仓库名称为NodeClub_nodejs,然后点击搜索按钮。

图片17.png 

从搜索结果中找到对应的仓库,点击仓库名称进入代码仓库。即可fork此代码仓库或者下载本项目代码。

图片18.png 

 

代码同步:

通过Git客户端将代码上传到DevCloud代码仓库。再将代码提交、推送到云端仓库,详细操作参见下面连接中的Git使用方法或TortoiseGit使用方法推送成功后,可以到DevCloud中查看项目的代码仓库。

 图片19.png

 

建立本地仓库

图片20.png 

将代码提交、推送到云端仓库。

Git代码托管请参考

Git on DevCloud

习惯使用TortoiseGit用户请参考

TortoiseGit on DevCloud

备注本文使用的是TortoiseGit

 

代码质量评估场景

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

代码质量评估操作指

产品介绍 基础操作 进阶操作


代码质量检查

检查服务下的“任务”中可以看到项目下的代码检查任务,点击新建任务进入到新建代码检查任务界面。

图片21.png 

输入任务名称,选择需要检查的代码仓库地址选择想要检查的分支,本项目检查任务选择的是master分支。最后根据需求选择对应的检查规则及也可以选择系统预定义好的JavaScript严重问题规则集、JavaScript一般问题规则集、JavaScript提示问题规则集

图片22.png 

进入到新创建的检查任务中,点击“开始检查

图片23.png 

任务进入检查中状态动态显示检查进度。

图片24.png 

代码质量评估报告

检查任务执行结束,生成详细的代码质量报告,评估代码质量。

图片25.png 

代码修改建议

图片26.png 

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

持续交付(CI/CD场景

7.1.1 编译构建

因为Javascript没有编译构建的过程,所以在实际开发过程中部分node.js工程是可以不用编译直接发布的,例如本项目可以直接部署运行。但是在DevCloud中云端部署需要可识别的软件包,所以在DevCloud中需要对node.js的程序进行打包。

编译构建操作南:

产品介绍 基础操作 进阶操作


编译

构建&发布>“编译”,点击“新建任务”,进入新建任务界面,按步骤配置构建任务。

图片27.png 

基本信息步骤,设置任务名称,点击下一步,进入代码配置步骤

图片28.png 

代码配置步骤选择需要构建的代码仓库,选择master分支点击下一步进入构建配置步骤

图片29.png 

demo中为了打通部署,采用Shell构建类型,通过shell脚本将demo程序打成tar.gz格式的软件包。并在打包后自动上传到发布仓库进行版本归档管理。

图片30.png 

在构建类型中输入要执行的shell脚本命令(tar zcvf CNode_demo.tar.gz *)。本样例中执行命令为将demo输出为.tar.gz格式的软件包。


版本打包归档

“构建执行配置”步骤添加归档步骤指定归档文件(这里指定的归档文件是打包命令打包生成的tar.gz文件这样构建完成可以下载构建生成的软件包。添加上传软件包到软件发布仓库步骤可以将构建生成的软件包上传到发布仓库(发布仓库详情参见发布,自动进行软件版本管理。点击下一步进入“构建计划配置”步骤

图片31.png 

定时构建

“构建计划配置”中可以设置任务的执行计划,可以使构建任务指定时间执行。点击保存完成构建任务的创建。

图片32.png 

 

构建日志

点击进入构建任务,点击开始构建按钮,即开始执行构建,构建构成中,工作空间会显示构建日志检查构建过程和归档发布过程是否有问题出现。成功后可以点击下载构建包下载本次构建生成的软件包

图片33.png 


构建历史

点击构建历史可以查看历史构建详情,并支持下载历史构建软件

图片34.png 

Tips用于归档的文件应填写打包文件名.tar.gz”,打包文件名与shell命令中的打包文件名一致。

7.1.2 发布

软件仓库

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


发布服务操作指

产品介绍 基础操作 进阶操作

 

版本管理和下载

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

图片35.png 

7.1.3 部署


部署服务操作指

产品介绍 基础操作 进阶操作 Ansible部署playbook编写指导

 

当代码构建打包成功并归档到发布仓库后,可以进行部署工作。部署任务一共分为四部分,分别是主机授权,编写部署脚本,任务配置,和执行部署。

图片36.png 

 

添加主机

进入部署界面点击右上角主机管理进入主机管理页面

图片37.png 

点击添加主机进入添加主机页面输入主机信息点击后点击添加即可完成主机添加的操作

图片38.png 

部署启动脚本编写:

本项目应用部署任务中的shell类型部署因此需要在编辑部署任务之前编写自动化启动脚本从而保证任务在执行部署时能按照脚本中的命令完成个性化的部署要求

编写启动脚本,脚本中的任务主要分为三部分:

1. 在脚本中启动RedisMongoDB的服务

2. `$ make install` 安装 Nodeclub 的依赖包

3. 启动Nodeclub服务

图片39.png 

由于每步启动服务操作之后需要一段时间的等待所以每句脚本之间添加一个sleep命令进行一定时间的等待。编写完成后将脚本保存为bat格式手动上传放到自定义路径下即可。

新建部署任务

写好启动脚本后进行部署任务配置,首先选择Shell部署,选择之前编译构建后保存到发布仓库中的软件包,并选定要部署的目标主机,之后可以开始编辑脚本路径。

编辑好对应的部署路径,停止脚本路径和启动脚本路径。此处需要使用ftp传输工具手动将启动脚本上传到虚拟机对应目录中,并将路径地址填写到启动脚本路径中(此路径没有特殊规定,使用者将脚本上传到自定义路径即可)。停止脚本创建一个空白的脚本文件进行同样的上传操作即可。

Shell脚本部分的内容主要提供将软件包从发布仓库中提取到目标主机的操作功能,此部分内容不做修改,完成配置后点击保存即可。

图片40.png 

应用验证:

通过项目中的config.js文件中的配置信息可知程序访问的默认端口为3000,此处可根据项目实际环境情况进行调制,本项目采用默认的3000端口。

图片41.png 

开始执行部署任务,任务执行完毕后访问应用验证路径http://ip:port

图片42.png 

应用验证结果:

图片43.png 

 

7.1.4 流水线

spacer.gif当所有流程打通之后,设置对应的流水线,将所有流程添加进去,实现自动化的构建发布部署一键执行。

流水线操作指南:

基础操作  进阶操作


图片44.png

 将需要的任务添加进流水线中,并运行流水线。

图片45.png 

7.1.5 测试

测试管理(TestMan)是面向软件开发者提供的一体化测试解决方案,覆盖测试需求、用例管理、测试任务管理、缺陷管理,多维度评估产品质量,帮助您高效管理测试活动,保障产品高质量交付。

测试管理操作指导:

基础操作 进阶操作


测试计划

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


用例管理

图片46.png 

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


测试总览

图片47.png 

包括需求覆盖率、缺陷、用例通过率、用例完成率、缺陷分布、用例进展、需求测试进度、成员用例进展和缺陷等。

至此,恭喜您打通了软件开发服务的各服务,完成了node.jsdemo搭建。

FAQ

8.1 华为云社区DevCloud产品答疑FAQ           http://forum.huaweicloud.com/forum-642-1.html

附录

9.1 软件开发服务DevCloud)用户指南

1、视频教程

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

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

【云途进阶课场景化教学,从实战中玩转软件开发服务

Web应用场景——开发一套EHR系统:规划阶段  开发阶段  交付阶段

App应用场景——打造一款趣味交友App规划阶段  开发阶段  交付阶段

迁移上云秘籍

1SVN迁移GIT最强指南

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

3、Git的工作模式

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



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享文章到微博
分享文章到朋友圈

相关文章


评论(0)


0/1000
评论

登录后可评论,请 登录注册

评论
温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消