1 概述

1.1 文章目的

本文通过一个实例介绍如何使用软件开发服务DevCloud完成一个C#Web项目的开发。

1.2 项目详情

1. 项目名称:超级冷笑话网站

2. 项目简介:一个Web网站,包含用户登录注册以及浏览笑话等功能的网站。

3. 开发程序语言:ASP.NET MVC5(C#)

4. 项目类型:基于ASP.NET的B/S架构的Web项目

5. 部署环境:Windows + IIS + MySql

6. 部署方式:模板部署

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

1.3 主干流程

本文的主干流程为:代码托管、编译构建、发布(软件发布库)、部署。

开发者在本地开发后通过代码托管服务进行版本管理。项目开发到一定程度后可以进行编译构建操作,构建出软件包,通过发布服务进行归档管理。再将软件包部署到服务器上,即可通过外部进行访问。

1.4 前提条件

注册华为云账号:华为云官网注册华为云账号,此账号适用于所有华为云产品。

弹性云服务器:部署将使用带有公网IP的ECS(Windows Sever 2012)。

2 项目管理

2.1 创建项目

新建项目的开发流程包含两种类型:scrum流程、看板流程。Scrum流程是标准的敏捷开发流程,工作项层级为传统的scrum划分方法Epic->Feature->Story->Task&Bug,本项目为把工作划分的层级更清晰,选择了scrum流程。

2.2 创建迭代

本项目研发周期短,只有一次release,划分成三个迭代,迭代周期为一周。

2.3 梳理产品需求清单

项目规划是以思维导图的形式将工作项的层级结构展示出来,更直观的看到父子关系,在项目规划中新建工作项后,会自动生成到后面的Epic,Feature,Backlog和迭代页面,在迭代开始前,项目经理将从客户获取的所有需求信息,逐一落实到项目规划中,分解成story,并为工作项设置优先级。

3 代码托管

3.1 创建仓库

Ø 新建代码仓库时,选择“模板新建”,在搜索框中输入已经被公开为示例模板的仓库名称,选择该模板。(此处搜索“superjokes”,编程语言选择ASP.NET)

Ø 输入新的仓库名称(可以和模板仓库同名),即可创建代码仓

数据库密码修改:(必做,否则将不会部署成功)

修改在superjokes/src/Joke.Web/App_Data目录下的appsettings.config。将数据库配置处的密码(第33行Password=)改为将要部署的主机上的数据库密码。

4 编译构建

4.1 创建构建任务

Ø 新建任务,在“选择构建模板”界面勾选msbuild,点击确定完成任务模板的创建。跳转至“编译构建任务”界面。

Ø 输入构建详细信息

任务描述、源码仓库分支等自行选择。

Ø Msbuild构建

Msbuild构建流程,使用镜像msbuild15-all

5 发布

本项目中发布服务可以将构建生成的可执行文件上传到发布仓库,便于软件包管理。

Ø 版本归档

Msbuild构建过程中已经写了对应的压缩指令。

在“上传软件包到发布库(Windows环境)”步骤写明构建包路径、发布版本号及包名后,可以将构建生成的软件包上传到发布仓库,自动进行软件版本管理。

6 部署

部署任务的目的是将构建完成的软件包部署到一个可供我们访问的服务器上,部署成功之后即可通过浏览器访问该地址。

部署任务一共分为四部分,分别是主机授信,编写部署脚本,任务配置,和执行部署。

此时需要一台可供访问的服务器,由于此次部署的Web工程是C#语言编写的,所以服务器需要是一台具有弹性ip地址的Windows服务器。

在主机授信前,需要先对主机环境进行相应配置。

6.1 主机环境配置

1. 安装MySQL。

2. 通过数据库配置脚本在服务器上生成MySQL数据库,数据库配置脚本为位于代码仓库根目录的superjokes.sql。

6.2 主机授信

将服务器主机授信到DevCloud里,用于部署网站。

点击“设置-通用设置-主机组管理”,将服务器以主机组的形式授信到项目当中。

新建主机组:

在主机组中添加主机:

6.3 模板部署任务

Ø 新建模板部署任务。

Ø 填写部署任务名称,不使用模板直接创建。

Ø 添加以下部署步骤:选择部署来源、解压文件、删除文件、执行PowerShell脚本

(1) 选择部署来源:(将软件包传到云主机上)

(2) 解压文件:(将传输完毕的软件包解压到指定路径)

(3) 删除文件:(将传输到主机的软件包删除)

(4) 执行PowerShell脚本:(PowerShell脚本位于解压目录即superjokes路径的根目录下)

PowerShell参数详解:(按顺序依次,中间以空格分开)

注:下图为web.ps1中的参数定义部分代码片段。PowerShell脚本参数中,Windows系统下路径的“\”需要以“\\”替换。

1.sitePort: 网站端口(提供一个目标主机上可访问的端口号)

2.SiteName: 网站名称,启动IIS服务时为该网站命名

3.SiteAppPoolsModel: Integrated 不必修改

4.managedRuntimeVersion: v4.0 不必修改

5.WebSitePath: IIS服务中网站源文件路径

6.IISLogFile: IIS服务中的日志存储路径

Ø 保存部署任务,并执行该任务。

6.4 查看部署效果

部署任务执行完成后就可以用http://ip:端口/默认页 访问网站了

到此,我们完成了C# web项目在DevCloud上的搭建。

华为云DevCloud,5人以下额度范围内,可以免费使用,并且可以预约免费的产品演示和技术交流,详情查看华为云官网

【华为云实战开发】8.如何快速搭建C#网站并实现持续集成?【华为云技术分享】的更多相关文章

  1. 用 Serverless 快速搭建个人相册网站

    日常生活中我们经常会拍摄一些视频.照片等,这些文件会占用比较多的存储空间.本文将介绍一种方法:利用 ThumbsUp 工具,结合 Serverless Framework 的 component 快速 ...

  2. Docker: 快速搭建LNMP网站平台

    快速搭建LNMP网站平台 步骤: 1.自定义网络(这里建立一个自定义网络,名字叫 lnmp, 让LNMP网站的服务,都加入这个自定义网络)docker network create lnmp2.创建M ...

  3. 华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

    1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件 ...

  4. 【华为云实战开发】10.经典的C++项目怎么在云端开发?【华为云技术分享】

    1 概述 1.1 文章目的 本文主要想为研发C++项目的企业或个人提供上云指导,通过本文中的示例项目 “音频解析器”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测试管理的操作指导,覆盖软 ...

  5. 通过与Quickbuild和Mist.io的持续集成实现云管理和使用监控

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 这篇文章由巴拉克·梅里莫维奇撰写. 总结我自己有关Openstack的各种骚操作先告一段落.这一次我想谈谈有关监控云服务的使用情况. 我个人使用 ...

  6. 基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 前言:关于什么是容器微服务PaaS和容器微服务PaaS的 ...

  7. 【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?【华为云技术分享】

    1 概述 1.1 文章目的 本文主要想为研发PHP项目的企业或个人提供上云指导,通过本文中的示例项目 “workerman-todpole”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测 ...

  8. Eclipse使用struts2开发web应用快速搭建

    eclipse 下载javaEE版,这里用4.5(Mars). Tomcat8解压,设置好JAVA_HOME环境变量. 下载struts2官网上的lib包,struts-2.3.24-lib.zip, ...

  9. Linux下快速搭建测试网站DVWA

    DVWA(Damn Vulnerable Web App)是一个基于PHP/MySql搭建的Web应用程序,旨在为安全专业人员测试自己的专业技能和工具提供合法的 环境,帮助Web开发者更好的理解Web ...

随机推荐

  1. MySQL之--修改密码

    1.在Mac上安装MySQL会随机生成一个临时密码,如下: --24T02::.004376Z [Note] A temporary password is generated for root@lo ...

  2. curl tftp libcurl 功能使用

    #include <curl/curl.h> static size_t read_callback(void *ptr, size_t size, size_t nmemb, void ...

  3. 【android】关于call拨号功能实现的记录

    前几天考试居然记错dial和call,故在此写上小demo来作区别,加深印象. 主要是实现call(拨通电话)功能,dial(拨电话)功能用作对比,话不多说,贴上代码. 1.创建布局文件如下: < ...

  4. Apache:系统找不到指定的文件: No installed ConfigArgs for the service "Apache2"

    解决方法: 将以下内容保存成FixApacheError.reg文件(其中红色粗体Apache2改成报错的系统服务名称,如"RTX_HTTPServer"),导入系统注册表 Fix ...

  5. zz图像、神经网络优化利器:了解Halide

    动图示例实在太好 图像.神经网络优化利器:了解Halide  Oldpan  2019年4月17日  0条评论  1,327次阅读  3人点赞 前言 Halide是用C++作为宿主语言的一个图像处理相 ...

  6. CF306C White, Black and White Again

    CF306C White, Black and White Again 洛谷评测传送门 题目描述 Polycarpus is sure that his life fits the descripti ...

  7. 洛谷 U86501 趣味擂台

    洛谷 U86501 趣味擂台 题目传送门 题目背景 \(JDFZ\)\(2019\)秋季运动会开始辣!运动会中有一个叫做"趣味擂台"的游戏...... 题目描述 游戏内容是这样的: ...

  8. streamsets 官方默认镜像中文支持问题

    以前在测试streamsets 的时候就发现中文乱码,后边也每太注意,以为支持问题,今天跑了下单元 测试代码,以及使用本机运行,发现都没有问题,然后运行以前的配置,使用jjs 发现模式的编码为 ANS ...

  9. Attention篇(一)

    主要是阅读以下博文的总结: https://zhuanlan.zhihu.com/p/31547842 https://www.zhihu.com/question/68482809/answer/2 ...

  10. 图论问题(2) : hdu 1102

    题目转自hdu 1102,题目传送门 题目大意: 输入一个n*n的邻接矩阵,其中i行j列代表从i到j的路径的长度 然后又m条路已经帮你修好了,求最短要修多长的路才能使所有村庄连接 不难看出,这道题就是 ...