仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1781|回复: 19
打印 上一主题 下一主题

[学习教程] IOS设计利用AppVeyor CI 和PowerShell部署使用仓酷云

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:26 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
NSStringNSArrayNSDictionary等这些工具在所有的框架里都会出现iOS大部分类都是继承自NSObject(我还没见过不是继承自NSObject的..)开首语

关于怎样为单一的ASP.NETweb使用程序设置延续集成,你能够找到良多文章。这些文章都写到怎样经由过程WebDeploy来构建完善的情况来部署复杂、只需稍作修正VS.NET模板的web使用程序。任何工具在这一完善情况下都能顺遂举行。
可是,真正部署使用程序的话却并不是易事。老是有成绩不休呈现在以下情形中:当必要在注册表(Registry)或自界说文件夹中设置设置,大概你必要部署到Web集群时。
本文中,我们经由过程利用PowerShell远程处置(PowerShellremoting)和AppVeyorCI为带有ASP.NETweb使用程序和WindowsService的办理计划在其暂存(staging)和产物情况中设置延续集成。
办理计划概述

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


  • DemoApp.Web-ASP.NET使用程序,前端
  • DemoApp.Web.Tests-利用VisualStudio测试框架的web使用程序单位测试
  • DemoApp.Service-承载WCF服务的Windowsservice,后端
  • DemoApp.Service.Tests-利用NUnit框架的Windowsservice单位测试

<br>
该示例使用程序的代码库托管于BitBucket:
我们究竟将怎样部署?

我们碰到的第一个成绩就是怎样部署Windowsservice?我们没有针对Windowsservice的“公布”菜单,也没有响应的设置转换。基本没法用WebDeploy。为了主动化项目标部署,我们将利用PowerShell部署框架-AppRolla。
AppRolla使用PowerShell远程处置在方针呆板上实行部署义务。部署义务将下载使用程序包,解包,更新设置设置,然后创立或更新使用程序网站及pool。该使用程序包仅仅是带有使用程叙文件夹的紧缩包,经由过程HTTP上传到内部存储。其外部并没有任何出格的地方-模块写在PowerShell内,很简单检察和修正。
为了让你对PowerShell部署一睹为快,我们如今就创建一个复杂web使用程序,并将其部署到服务器上。
全部流程中最具应战性的部分大概就是设置带有SSL认证的PowerShell远程处置了。我们激烈倡议利用HTTPS与远程服务器举行通讯,由于一切的数据流量都是加密的。
当你在WindowsAzure上创立新的假造机时,PowerShell远程会主动被激活和设置。防火墙将同意PowerShell远程HTTPS端点端口5986,别的我们也将HTTP端点增加到示例服务器上:

<br>
假如你需设置别的服务,能够参照该链接里的详细细节:guideonhowtoconfigurePowerShellremoting。
为了在实例呆板上疾速安装IIS7.5,我们利用以下PowerShell命令:
Add-WindowsFeature-NameWeb-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
我们创立带有“Helloworld”的复杂Web使用程序,然后将其部署到示例服务器。

<br>
创立一个新的SimpleWebApp-1.0.zip紧缩包,将带有初版本的default.aspx存档起来。
如今,我们必要将该使用程序紧缩包上传到内部存储,如许方针服务器就可以经由过程HTTP来对其会见。该服务器能够是启用了FTP的web服务器,AmazonS3或Azureblob存储。关于该示例,我们利用DropBox。它为DropBox文件夹下一切项目供应大众的下载链接。
将该SimpleWebApp-1.0.zip拷贝到你的DropBox文件夹中,然后右击文件夹,选择“ShareDropBoxlink”。在扫瞄器中翻开该链接,然后拷贝“Download”键的URL。

<br>
翻开PowerShell的把持台“Asadministrator”,将实行政策(executionpolicy)改成为同意远程PowerShell剧本:
  1. Set-ExecutionPolicyRemoteSigned
复制代码
安装AppRolla.psl模块(将被安装到用户设置文件中):
  1. (new-objectNet.WebClient).DownloadString("https://raw.github.com/AppVeyor/AppRolla/master/install.ps1")|iex
复制代码
将AppRolla模块导进到以后会话中:
  1. Import-ModuleAppRolla
复制代码
AppRolla有两组cmdlets:设置和部署。经由过程设置cmdlets界说使用程序和情况。
紧接着,增加新的“SimpleWebApp”使用程序,该使用程序只带有单一的“website”脚色:
  1. New-ApplicationSimpleWebApp
复制代码
Add-WebsiteRoleSimpleWebAppWeb-PackageURL"<your-dropbox-download-link>"
在服务器上界说“示例”情况(在提醒呈现后,输出示例服务器的办理员证实-前面将有具体解说):
  1. New-Environmentdemo
复制代码
Add-EnvironmentServerdemo"appveyor-demo.cloudapp.net"-Credential(Get-Credential)
将“SimpleWebApp”使用程序作为版本1.0部署到“示例”情况上:
  1. New-DeploymentSimpleWebApp1.0-todemo
复制代码

<br>
(点击图片缩小)
就如许!你已经由过程PowerShell将你的Web使用程序公布到示例服务器上了:

<br>
如今,我们修正一下页面内容,然后部署一个新的示例使用程序版本。我们将“Hello,World!”改成“Hello,world2.0!”。随后,创立新的SimpleWebApp-1.1.zip文件将修正好的default.aspx文件存档,再次上传到DropBox。
更新“website”脚色,将其紧缩包的URL修正为新的值:
  1. Set-WebsiteRoleSimpleWebAppWeb-PackageUrl<public-URL-of-SimpleWebApp-1.1>
复制代码
然后部署新版本1.1:
  1. New-DeploymentSimpleWebApp1.1-todemo
复制代码

<br>
从日记能够看出,每次部署城市在当地:applications<application-name><role-name><version>中天生新的文件夹。默许情形下,方针服务器上能够保存5个部署版本,因而使用程序能够很简单地回滚到上一版本:
  1. Restore-DeploymentSimpleWebApp-ondemo
复制代码
从示例情况中删除一切使用程序部署:
  1. Remove-DeploymentSimpleWebApp-fromdemo
复制代码
全部历程,我们都利用复杂且简便的命令来完成一切事情!
利用AppVeyorCI延续构建

AppVeyorCI是为Windows开辟职员计划的基于云的延续集成和部署平台。它有本人的服务器,因而不必要安装或设置。就算必要,设置起来也十分复杂。别的,AppVeyorCI对开源项目是收费的。
为了在AppVeyorCI中设置工程,其代码源必需托管于在线源代码把持库上,好比:GitHub、BitBucket或Kiln。它撑持Git和Mercurial。
在我们示例中,我们利用托管于BitBucket的Mercurial库。对贸易项目来讲,BitBucket相称有用,它收费地供应无穷制的公有库。
启用NuGet存储

假如你的办理计划依附于NuGet办理包,不要忘了启用NuGetrestore来主动下载构建服务器上的各类程序包。可使用怎样启用NuGe包存储这一引导来确保在.Nuget文件夹中的NuGet.exe已增加到库里了。
增加新项目

我们能够先从创立新项目入手下手:

<br>
一旦新项目建成,新的webhook就会主动增加到项目库中,为新构建拉开尾声。
构建设置和设置互换

当经由过程WebDeploy部署时,设置互换在使用程序设置过程当中是一个关头。关于每一个必要部署的情况,都需界说新的VS.NET办理计划设置,然后利用设置转换天生web.config,它带无数据库链接字符及别的使用程序针对每一个情况特定的设置。该办法看起来可行,却有一系列成绩:
&bull;相似数据库链接字符如许的敏感数据存储于源代码把持中。
&bull;设置转换使用于构建历程,每当项目部署到新情况中,都必要从头构建设置转换。
当用AppVeyor部署时,设置转换十分有效,但并不是是必须的。默许情形下,VS会发生两种设置:Debug和Release,年夜多半情形下,这类情势完整OK。Debug设置用于当地开辟,而Release设置则用于CI流程天生能够部署就任何情况的包。设置转换应当“真正地”用于转换设置文件布局,好比:禁用“Debug”标识;启用自界说毛病;或启用Autofac改换形式等合用于一切情况的罕见设置。
我们如今就能够入手下手改动Release设置页面中的项目构建设置:

<br>
AppVeyor供应三种构建计划:


  • VisualStudio计划-运转MSBuild于VS.NET办理计划或工程文件(假如没有指定,起首查找第一个.sln或.*proj文件),另有将一切项目构建了局以工件情势打包。
  • MSBuild-依据本人的划定运转MSBuild,同意在“Packaging”页面上界说自界说的构建工件。
  • Script-运转特定PowerShell剧本或批文件。为办理构建流程及其了局供应最年夜化的自在。
组件版本

每一个新项目构定都会收到新的版本号,该版本号的格局划定于“General”页面下。
AppVeyor默许供应Windowsstyleversioning(major.minor.{build}.revision),可是你也能够使用别的恣意版本作风,好比:SemVer(major.minor.patch.{build})。
当启用“Updateassemblyversionattributes”时,AppVeyor会将办理计划目次下的一切AssemblyInfo.*文件设置成以后版本。
实行测试

AppVeyor能经由过程以下这些测试框架,在assembly中发明和运转测试:


  • MSTest
  • NUnit
  • xUnit
当“测试”步骤被启动时,AppVeyor会剖析“out”文档中一切的assembly,来确认它们对所撑持的测试框架是不是含有响应的援用。假如有,那末一切assembly内的测试将会在响应的测试实行器中运转一遍。一切assembly的测试了局也会合合显现在UI上。
(点击图片缩小)

<br>
构建.测试.打包!

我们如今入手下手创立新构建,能够对项目库举行修正或点击“NewBuild”。
该摹拟项目标构建流程会临盆两个构建工件:webapplication和Windowsservice。将它们下载上去,你会发明其内容就是带有使用文件的惯例紧缩文档。
因为Windowsservice包基础上就是其“Bin”文件夹下用于天生web使用包的内容中还需包括的一些步骤:

  • Web使用应是办理计划的一部分。
  • 创立使用了“filesystem”公布办法的新公布设置文件,并公布了利用MSBuild的WAP项目,该设置文件用来确保web.config修正和别的公布设置的实行。
  • 将公布的web使用打包为一紧缩文件。
构建工件将存储于Geo-redundant云存储中,能经由过程其独占的专属链接下载。假如想有本人专有的构建工件定名布局,和同意大众会见的话,能够设置专有存储空间。
乐成部署到预临盆情况

我们如今入手下手往staging上设置主动化部署,作为该构建流程的一部分。
该部署应剧本的情势来完成,能够是PowerShell或批处置文件。在项目库的根部创立“部署”文件夹以安排部署剧本。
翻开PowerShell命令行,跳转到“部署”文件夹,并实行以下命令下载模板剧本到现有目次:
  1. (new-objectNet.WebClient).DownloadString("https://raw.github.com/AppVeyor/AppRolla/master/install.ps1")|iex0
复制代码
会有三个剧本被增加:configure.ps1、project.ps1和deploy.ps1。
总的说来,我们只必要编纂一个文件就可以设置部署:project.psl。该文件界说了我们将要部署的情况。将删除紧接着新staging情况那一行的备注,然后增加摹拟服务器:
  1. (new-objectNet.WebClient).DownloadString("https://raw.github.com/AppVeyor/AppRolla/master/install.ps1")|iex1
复制代码
前往到AppVeyorCI,翻开项目设置的“Deployment”页面。
选择“Rundeploymentscript”,并指定剧本路径:
  1. (new-objectNet.WebClient).DownloadString("https://raw.github.com/AppVeyor/AppRolla/master/install.ps1")|iex2
复制代码
设置以下部署变量:
  1. (new-objectNet.WebClient).DownloadString("https://raw.github.com/AppVeyor/AppRolla/master/install.ps1")|iex3
复制代码

<br>
ServerUsername和Password用来创立Credential对象以考证PowerShell的远程挪用。以下两种情形请求到API关头字:a)浏览项目工件猎取项目包的URL;b)考证方针服务器下载工件包。AppVeyorAPI关头字能够在用户设置的“APIKeys”页面下找到。
就如许。接着只需提交“deployment”文件夹,将其推送到项目库就能够入手下手该部署的新构建了。
怎样更新web.config的链接字符?

部署变量经由过程$variables参数以哈希表情势传送到剧本中。关于项目或脚色,假如想启用附加的设置变量,能够在Set-Application,Set-WebsiteRole或Set-ServiceRolecmdlets中利用“Configuration”参数。翻开project.ps1,并增加以下语句:
  1. (new-objectNet.WebClient).DownloadString("https://raw.github.com/AppVeyor/AppRolla/master/install.ps1")|iex4
复制代码
}
然后在部署设置页面上界说“DefaultConnection”变量,用于web使用的链接字符的传送。部署剧本经由过程web.config为web使用程序使用了脚色设置,对Windows使用程序,则经由过程app.config,使用了以下这些划定规矩:

关于UIView的子类有很多UIButtonUITableView这个都需要各个击破看看文档从名字上就很容易理解是做什么的UIViewController是管理View和Model的类(@张开说UIViewController是用来管理view的,管理model的类自己写,当然,model也可以用UIViewController来管理,不过恐怕成为不好的代码。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-16 01:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表