【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?【华为云技术分享】
1 概述
1.1 文章目的
本文主要想为研发PHP项目的企业或个人提供上云指导,通过本文中的示例项目 “workerman-todpole”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测试管理的操作指导,覆盖软件开发全生命周期。
1.2 项目详情
1. 项目名称:workerman-todpole社区系统
2. 项目简介:workerman-todpole采用PHP(workerman框架)+HTML5技术开发,是一款以workerman作为应用服务器,前端采用HTML5+WebSocket开发的小蝌蚪即时交互游戏。 游戏交互很简单,点击屏幕小蝌蚪可以自由游动,其它玩家可以看到周围玩家的游动状态,并且可以即时聊天
3. 开发语言:PHP
4. 项目类型:蝌蚪游泳交互程序 使用PHP(workerman框架)+HTML5开发
5. 开发环境:PHP
6. 部署环境:Linux
7. 部署方式:shell部署
8. 项目架构
前端采用HTML5开发
以PHP的workerman框架开发后台游戏服务器
后端PHP多进程支持
采用WebSocket协议
PHP实时推送技术
独立运行,不依赖Mysql、apache、nginx等软件。
1.3 前提条件
1. 注册华为云账号:华为云官网注册华为云账号,此账号适用于所有华为云产品。
2. 弹性云服务器:部署将使用带有公网IP的ECS。
2 项目管理
2.1 创建项目
新建项目的开发流程包含两种类型:scrum流程、看板流程。Scrum流程是标准的敏捷开发流程,工作项层级为传统的scrum划分方法Epic->Feature->Story->Task&Bug,本项目为把工作划分的层级更清晰,选择了scrum流程。
2.2 创建迭代
本项目研发周期短,只有一次release,划分成三个迭代,迭代周期为一周。
2.3 梳理产品需求清单
项目规划是以思维导图的形式将工作项的层级结构展示出来,更直观的看到父子关系,在项目规划中新建工作项后,会自动生成到后面的Epic,Feature,Backlog和迭代页面,在迭代开始前,项目经理将从客户获取的所有需求信息,逐一落实到项目规划中,分解成story,并为工作项设置优先级。
2.4 输出迭代清单
在迭代开始前,在Backlog页面过滤出优先级“高”且重要程度为“关键”的工作项,纳入迭代1,与开发人员进行需求澄清。其余迭代,均可根据组内实际情况,按照优先级从高到低,重要程度减弱的顺序进行开发。
3 代码获取
3.1 新建代码仓库
1. 进入创建好的项目中,选择代码托管功能,点击右侧新建仓库按钮。
2. 进入新建仓库界面后,选择模板新建,左侧筛选条件中应用类型为Web Server,变成语言为PHP,选择完筛选条件后,选择出现的workerman-todpole,完成模板选择。
3. 选择完模板后填写仓库信息,点击确定,完成仓库创建。
4 云端持续部署流水线
4.1 编译构建
本PHP项目直接在linux主机环境下直接开启服务即可运行,本身无需进行编译构建打包,但是在DevCloud中云端部署需要可识别的软件包,所以在DevCloud中需要对PHP的程序进行简单的打包。
4.1.1 新建编译构建任务
1. 进入创建好的项目中,在构建&发布模块下选择编译,点击右侧新建按钮
2. 输入任务名称,选择对应代码仓库和分支
3. 选择公共模板中的Shell模板创建任务。
4. 进入任务配置界面后点击左侧的加号,添加步骤
5. 在弹出的操作步骤选择页面中选择添加“上传软件包到软件发布库”步骤
6. 点击参数设置选项,为本次任务添加两个配置参数,分别为pkgVersion和codeBranch作为版本号和代码仓库分支的参数,并在代码仓库分支选项中选定此参数。
7. 添加完步骤后点击左侧执行shell命令步骤,进行命令编辑。本任务添加的shell命令为“tar zcvf workerman_todpole.tar.gz *”,目的是将代码打包为tar.gz格式的软件包。
8. 接着选择左侧上传软件包到发布库步骤,编辑对应信息。构建包路径对应上一步shell命令中的打包路径,发布版本号为第一步添加的版本号参数,格式为${pkgVersion},最后包名为上传软件发布库后的包名。
9. 完成构建任务后,点击保存按钮。
10. 进入创建好的构建任务,点击开始构建按钮,在弹出的参数配置窗口输入要配置的参数值,点击确定执行构建任务。
4.2 部署
4.2.1 添加主机
将服务器主机授信到DevCloud里,用于部署网站。
点击“设置-通用设置-主机组管理”,将服务器以主机组的形式授信到项目当中。
新建主机组:
在主机组中添加主机:
4.2.2 环境准备
由于本项目需要特定的环境,因此需要在部署之前先登录对应的ECS云主机进行环境搭建。搭建环境的脚本内容如下:
php-cli安装方法:
composer安装方法:
4.2.3 新建模板部署任务
1. 新建模板部署
2. 编辑基本信息后,不使用模板直接创建
3. 点击“确定”后,添加部署步骤:
选择部署来源、解压文件、删除文件、执行shell脚本
选择部署来源:(将软件包传到云主机上)
解压文件:(将传输完毕的软件包解压到指定路径)
删除文件:(将传输到主机的软件包删除)
执行shell命令:(启动脚本start.sh位于代码根目录,现已被解压至解压路径)
将启动脚本start.sh复制到指定路径,并执行。启动脚本中的路径需要与部署主机中的实际路径相一致。
shell命令内容:
4. 点击确认按钮,保存任务配置。
4.2.4 执行部署任务
1. 进入配置好的部署任务中,点击“执行”按钮开始执行部署任务。
2. 当任务状态显示完成后,表明自动化部署执行成功,可在地址栏输入对应的访问地址,进行访问验证。本项目验证地址为http://ip:8383
4.3 流水线
当我们完成了编译构建和部署阶段的任务配置后,即可创建包含编辑构建和自动化部署的持续交付流水线了。
4.3.1 新建流水线任务
1. 进入流水线界面,点击新建流水线按钮,进入新建流水线页面。
2. 在新建流水线配置中,首先选择默认的基本场景,填写流水线名称,然后根据实际需要添加或删除流水线阶段步骤。
本项目中的阶段分别设定为构建阶段和部署阶段
3. 在添加具体的流水线任务之前需要先配置流水线参数
点击添加参数,添加两个参数,然后对参数信息进行配置
编辑新添加的两个参数名称为version和branch,参数默认值可以不用编辑
点击保存完成参数配置。
4. 在构建和部署阶段分别点击添加任务,然后点击编辑按钮对添加的任务进行编辑
5. 在构建的任务编辑界面,选择之前已经创建好的构建任务,并将该构建任务的参数值设为刚才配置的流水线参数,格式分别为${version}和${branch},以达到用流水线参数为构建任务参数赋值的目的。完成配置后点击保存按钮。
6. 部署任务的添加方法同上,在选择完对应的部署任务后,软件包一项选择上一个阶段构建任务生成的软件包,保证流水线中的部署任务是使用最新的包文件。完成配置后点击保存。
7. 完成所有任务后点击保存按钮对流水线任务进行保存。
4.3.2 执行流水线
1. 在配置好的流水线任务重点击全新执行,在弹出的参数窗口中,输入配置的参数值,点击确定,开始执行流水线任务。
2. 完成流水线任务。
华为云DevCloud,5人以下额度范围内,可以免费使用,并且可以预约免费的产品演示和技术交流,详情查看华为云官网
【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?【华为云技术分享】的更多相关文章
- ASP.NET MVC项目框架快速搭建实战
MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,采用”Domain Model as View Model“的MVC开发 ...
- 【华为云实战开发】10.经典的C++项目怎么在云端开发?【华为云技术分享】
1 概述 1.1 文章目的 本文主要想为研发C++项目的企业或个人提供上云指导,通过本文中的示例项目 “音频解析器”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测试管理的操作指导,覆盖软 ...
- 华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】
1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件 ...
- 【华为云实战开发】8.如何快速搭建C#网站并实现持续集成?【华为云技术分享】
1 概述 1.1 文章目的 本文通过一个实例介绍如何使用软件开发服务DevCloud完成一个C#Web项目的开发. 1.2 项目详情 1. 项目名称:超级冷笑话网站 2. 项目简介:一个Web网站,包 ...
- Android项目开发全程(三)-- 项目的前期搭建、网络请求封装是怎样实现的
在前两篇博文中已经做了铺垫,下面咱们就可以用前面介绍过的内容开始做一个小项目了(项目中会用到Afinal框架,不会用Afinal的童鞋可以先看一下上一篇博文),正所谓麻雀虽小,五脏俱全,这在里我会尽量 ...
- 微信开发准备(二)--springmvc+mybatis项目结构的搭建
转自:http://www.cuiyongzhi.com/post/34.html 前面一篇有说道如何在MyEclipse中搭建maven项目,这里将继续介绍如何在搭建好的基础maven项目中引入我们 ...
- 如何在华为云软件开发云上运行Python
一. 华为云软件开发云与Python 1. 华为云软件开发云简介 华为云软件开发云(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研发工具为一体的一站式云端DevOps平台,面向开发者 ...
- 直播预告 | 开源的云原生开发环境 —— Nocalhost
直播来啦!本次云原生学院邀请到腾讯云 CODING DevOps 后端工程师王炜为大家分享<开源的云原生开发环境 -- Nocalhost>. 直播信息 讲师:王炜 - 腾讯云 CODIN ...
- 【阿里云产品公测】大数据下精确快速搜索OpenSearch
[阿里云产品公测]大数据下精确快速搜索OpenSearch 作者:阿里云用户小柒2012 相信做过一两个项目的人都会遇到上级要求做一个类似百度或者谷歌的站内搜索功能.传统的sql查询只能使用like ...
随机推荐
- OpenCV图像处理以及人脸识别
OpenCV基础 OpenCV是一个开源的计算机视觉库.提供了很多图像处理常用的工具 批注:本文所有图片数据都在我的GitHub仓库 读取图片并显示 import numpy as np import ...
- [考试反思]0727NOIP模拟测试9
啊哈?水到一个rk1? 谢谢诸位大佬放水让我这种人体验到了rk1的滋味. 怪怪的滋味.不太像我的水平. 其实这次考试心态已经佛了,刚意识到前6次考试累计的挺高的分数被清空了,7,8两场又爆炸了... ...
- 「考试」 Or
不得不说是一道多项式神题了. 虽然说颓代码颓的很厉害不过最终A掉了. 好好讲一讲这道题. 涉及的知识点是:高阶导数,NTT,指数型母函数,泰勒公式,以及意志力和数学推导能力. 那就开始了. 一个测试点 ...
- elasticsearch操作命令
总结几个es的curl操作命令: 查询某条数据:curl -XGET http://elasticsearch:9200/company/company/123?pretty 查询索引下数据总量:cu ...
- P4544 [USACO10NOV]购买饲料Buying Feed
额,直接思路就dp吧.(我还想了想最短路之类的233但事实证明不行2333.....) 直入主题: 化简题意:在x轴上有n个点,坐标为xi.从原点出发,目标点为e,在途中需要收集K重量的物品,在每个点 ...
- Java Part 001( 01_01_Java概述 )
Java作为编程语言, 甚至超出了语言的范畴, 成为一种开发平台, 一种开发规范. Java语言相关的JavaEE规范里, 包含了时下最流行的各种软件工程理念, 学习Java相当于系统的学习了软件开发 ...
- js数组方法大全(上)
# js数组方法大全(上) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 join() reverse() sort() concat() slice( ...
- Linux下RIAD的实现及mdadm命令的基本用法
一.RAID简述 磁盘阵列(Redundant Arrays of Independent Disks,RAID),是把多个物理磁盘组成一个阵列,当作一个逻辑磁盘使用,它将数据以分段或条带的方式储存在 ...
- Python 基础之socket编程(三)
python 基础之socket编程(三) 前面实现的基于socket通信只能实现什么呢?在tcp协议的通信中就是一个用户说一句,服务端给你回一句,你再给服务端说一句,服务端再给你回一句,就这样一直友 ...
- macOS 使用Miniconda配置本地数据运算环境
目前,做数据分析工作,基本人手Numpy,pandas,scikit-learn.而这些计算程序包都是基于python平台的,所以搞数据的都得先装个python环境...(当然,你用R或Julia请忽 ...