使用AppVeyor CI 和PowerShell部署应用概述

开头语

关于如何为单一的ASP.NET web应用程序设置持续集成,你可以找到很多文章。这些文章都写到如何通过Web Deploy来构建完美的环境来部署简单、只需稍作修改VS.NET模板的web应用程序。任何东西在这一完美环境下都能顺利进行。

但是,真正部署应用程序的话却并非易事。总是有问题不断出现在以下情况中:当需要在注册表(Registry)或自定义文件夹中配置设置,或者你需要部署到Web集群时。

本文中,我们通过使用PowerShell远程处理(PowerShell remoting)和AppVeyor CI为带有ASP.NET web应用程序和Windows Service的解决方案在其暂存(staging)和产品环境中配置持续集成。

解决方案概述

我们的示例中包含4个项目:

DemoApp.Web -ASP.NET应用程序,前端

DemoApp.Web.Tests -使用VisualStudio测试框架的web应用程序单元测试

DemoApp.Service -承载WCF服务的Windows service,后端

DemoApp.Service.Tests -使用NUnit框架的Windows service单元测试

该示例应用程序的代码库托管于BitBucket:

我们到底将如何部署?

我们遇到的第一个问题就是如何部署Windows service?我们没有针对Windows service的“发布”菜单,也没有相应的配置转换。根本没法用Web Deploy。为了自动化项目的部署,我们将使用PowerShell部署框架 - AppRolla。

AppRolla利用PowerShell远程处理在目标机器上执行部署任务。部署任务将下载应用程序包,解包,更新配置设置,然后创建或更新应用程序网站及pool。该应用程序包仅仅是带有应用程序文件夹的压缩包,通过HTTP上传到外部存储。其内部并没有任何特别之处 - 模块写在PowerShell内,很容易查看和修改。

为了让你对PowerShell部署一睹为快,我们现在就建立一个简单web应用程序,并将其部署到服务器上。

整个流程中最具挑战性的部分可能就是设置带有SSL认证的PowerShell远程处理了。我们强烈建议使用HTTPS与远程服务器进行通信,因为所有的数据流量都是加密的。

当你在Windows Azure 上创建新的虚拟机时,PowerShell远程会自动被激活和配置。防火墙将允许PowerShell远程HTTPS端点端口5986,另外我们也将HTTP端点添加到示例服务器上:

如果你需设置其它服务,可以参照该链接里的具体细节:guide on how to configure PowerShell remoting。

为了在实例机器上快速安装IIS7.5,我们使用以下PowerShell命令:

Add-WindowsFeature -Name Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-Static-Content,Web-Http-Logging,Web-Stat-Compression,Web-Filtering,Web-Net-Ext,Web-Net-Ext45,Web-Asp-Net,Web-Asp-Net45,Web-ISAPI-Ext,Web-Mgmt-Console

我们创建带有“Hello world”的简单Web应用程序,然后将其部署到示例服务器。

时间: 2025-01-27 07:56:50

使用AppVeyor CI 和PowerShell部署应用概述的相关文章

Travis CI实现持续部署

安装Ruby 2.0以上版本并安装travis的命令行工具 可以看出我的已经是安装好的(Ubuntu 16.04.3 LTS 系统) ruby -v ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] 安装:travis gem install travis  安装完成后,切换到你开发环境的项目目录下,运行: 根据提示,输入你刚刚用于travis-ci网站登录的Github账户名及密码. 当然了,我这里直接是是用的github的账号和密码哦 注意:这里有

Kubernetes 部署失败的 10 个最普遍原因(Part 2)

本文讲的是Kubernetes 部署失败的 10 个最普遍原因(Part 2)[编者的话]本文作者通过和客户联合开发,从实践中总结了 Kubernetes 部署失败的 10 大普遍原因,本文阐述了剩下的 5 大原因.作者在实践中,尽量把繁琐工作自动化,授人以鱼的同时也授人以渔,小编觉得这是本文最有价值的地方. [深圳站|3天烧脑式Kubernetes训练营]培训内容包括:Kubernetes概述.架构.日志和监控,部署.自动驾驶.服务发现.网络方案等核心机制分析,进阶篇--Kubernetes调

简述WebSphere Commerce Search Web 服务器的自动化部署和配置

WebSphere Commerce Search Web 服务器自动化部署配置概述功能概述 在 Version 7 Feature Pack 5 之前,用户在启动 foundation 功能部件之后需要手动地执行一些配置步骤以完成对 WebSphere Commerce Search Web 服务器的部署和配置工作.以 IBM HTTP Server(IHS) Web 服务器为例,用户需要手动完成以下对 Search Web 服务器的部署配置工作:创建 Search Web 服务器的 http

使用Configuration Manager部署操作系统

随着 http://www.aliyun.com/zixun/aggregation/13449.html">System Center Configuration Manager 2007 的发布,服务器管理员现在可以使用客户端管理员已使用 多年的相同操作系统部署工具.在过去,服务器管理员常常需要使用 CD 或 DVD 手动安装 Windows Server?, 然后再耗费数小时时间来配置服务器.某些管理员则有所变通,他们通过创建一个 unattend.txt 文件(并且也许 还会使用远

Kubernetes的四种用户部署场景

本文讲的是Kubernetes的四种用户部署场景[编者的话]这是一篇介绍生产环境使用Kubernetes的用户部署场景. [深入浅出学习 etcd]etcd为分布式系统提供可靠.高效的配置管理服务,在Docker.Kubernetes.Mesos等平台中扮演了越来越重要的角色.作为2013年开始的项目,它还很年轻,官方文档中缺乏实现上全面.系统的介绍,本课程深入浅出地介绍了etcd的实现,并为运维和二次开发提供了系统的指导和建议. Kubernetes可以作为容器编排引擎.PaaS或者作为云原生

让融合发挥效益:理解CI及企业规划

世界各地的数据中心越来越关注处理环节和连通性约束,这些都会受功率.空间和散热设备所限制.与此同时,出于对成本支出限制的考虑,有些企业不得不重新制定数据中心策略.所探究出来的新方法就是,将融合基础设施从孤立的服务器.存储.数据和流程中分离出来,这样能够更有效地利用可用的电力和空间. 融合基础设施(简称CI)仍然是部分理念.部分巧妙营销和部分定义明确的IT系统组件的混合体.它有多种描述方式:超融合基础设施.融合系统.统一计算.基于结构的计算(FBC).规模化计算以及动态基础设施.从本质上来看,基础设

PowerShell 5.0和跨平台PowerShell支持class类编程

PowerShell 5.0和跨平台PowerShell支持class类编程 PowerShell 5.0支持class类编程,具体查看:https://technet.microsoft.com/en-us/library/dn820211.aspx 这里给个最简单的例子: class A{ [string]$name A([string]$name){$this.name=$name} } $a=[A]::new("test") $a.name 另外,微软这两年做的跨平台Power

云原生:云计算时代命题之终极解决方案

Cloud Native?云原生?很多人一看到这个词就懵了,到底什么是云原生? 云原生这个词其实由来已久,IT行业永远也不缺乏新概念.2015 年,Pivotal公司的Matt Stine提出Cloud Native这一概念,并结合这个概念包装了自己的新产品Pivotal Web Service和Spring Cloud.在Matt Stine所著的Migrating to Cloud Native Application Architectures一书中,他对云原生的概念进行了详细的阐述.该书

以持续集成工具实现DevOps之禅

作为DevOps流程中的一个重要组成部分,持续集成(CI)的目标是对开发团队的代码进行集成,包括代码的构建.单元测试与集成测试的执行,以及生成执行结果的报表等等.CI使开发团队无需将时间浪费在处理代码冲突的问题上,因此很多人将其视为敏捷软件开发的奠基石. CI与持续部署(CD)过程通常是紧密联系在一起的.CD过程通过在管道中定义的步骤将由CI过程所生成的结果部署至集成.预发布乃至生产环境中.由于整个CD过程是"持续的",因此一旦有代码签入源代码控制系统,后续过程就会自动进行测试.对代码