Azure 基础:用 PowerShell 自动发布 CloudServices
在软件的开发过程中,自动化的编译和部署能够带来很多的优势。下面我们聊聊如何自动发布云应用程序到 azure 上的 cloud services。
打包要发布的内容
首先使用 msbuild 编译 *.ccproj 文件,我们需要使用生成产物中的:
app.publish\xxx.cspkg
app.publish\yyy.cscfg
下载 publishsettings 文件
使用你的 Azure 账号登录下面的地址,就可以下载 publishsettings 文件(国际版):
https://manage.windowsazure.com/publishsettings/index
下载到的文件的名字大概是这个样子:
xxx1-31-2017-credentials.publishsettings
前面的 xxxx 是你的 subscription 名称。
另一种方法是使用 powershell 命令 Get-AzurePublishSettingsFile 下载 publishsettings 文件,过程和上面差不多。
安装powershell的azure module
访问 https://azure.microsoft.com/en-us/downloads/#cmd-line-tools, 点击 “Command-line tools->PowerShell” 下面的 “Windows install” 下载安装包。
运行安装包,安装 azure modules。
创建自动发布的脚本
导入 azure module
Import-Module Azure
设置脚本中使用的变量
$package = app.publish\xxx.cspkg
$configuration = app.publish\yyy.cscfg
# subscription 名称
$subscription = "your subscription name";
# service 名称
$service = "your service name";
# storage account
$storage = "your storage account";
# slot 名称,一般会先发到 staging中,检查后再进行切换
$slot = "Staging";
# 为每次发布提供一个说明信息
$deploymentLabel = “your demplyment label”
导入 publish settings
publish settings 文件中记录了 subscription 信息以及用于登录的验证信息,所以先要把这些信息导入进来。
Import-AzurePublishSettingsFile publishsettings-file-path
最好在导入前能够先检查一下,看这个文件对应的 subscription 是不是已经被导入过了。
$thisSubscriptionExist = $False
$subs = Get-AzureSubscription
if($subs.Count -gt 0)
{
Foreach ($sub in $subs)
{
if($sub.SubscriptionName -eq $subscription)
{
$thisSubscriptionExist = $True
}
}
}
如果不存在才执行导入操作,否则直接进行下一步就行了。
if(!$thisSubscriptionExist)
{
Import-AzurePublishSettingsFile $subscriptionSetting
// 为subscription 添加一个storage account
Set-AzureSubscription -CurrentStorageAccount $storage -SubscriptionName $subscription
}
设置当前的 subscription
从上一步中我们可以发现,你机器上可能同时保存了多个 subscription 的信息。那么当我们执行发布操作时,默认会使用哪个 subscription 的信息呢?这里有一个当前 subscription 的概念,发布操作会使用当前 subscription 的信息进行发布。因此在发布操作之前一定要设置本次发布使用的 subscription 为当前 subscription。
Select-AzureSubscription -SubscriptionName $subscription –Current
检查 deployment 是否存在
在执行部署前需要先检查 deployment 是否存在,这会影响到后面的部署方式。如果 deployment 不存在,执行 New-AzureDeployment 命令。如果 deployment 已经存在,执行 Set-AzureDeployment 命令。
$deployment = Get-AzureDeployment -ServiceName $service -Slot $slot -ErrorVariable a -ErrorAction silentlycontinue
if ($deployment.Name -ne $null)
{
# deployment已经存在,使用Set-AzureDeployment命令进行更新。
}
else
{
# 需要使用New-AzureDeployment命令新建 deployment
}
新建 deployment
New-AzureDeployment -Slot $slot -Package $package -Configuration $configuration -label $deploymentLabel -ServiceName $service;
$completeDeployment = Get-AzureDeployment -ServiceName $service -Slot $slot;
//检查部署是否成功
$completeDeploymentID = $completeDeployment.deploymentid;
更新已经存在的部署
Set-AzureDeployment -Upgrade -Slot $slot -Package $package -Configuration $configuration -label $deploymentLabel -ServiceName $service -Force;
$completeDeployment = Get-AzureDeployment -ServiceName $service -Slot $slot;
//检查部署是否成功
$completeDeploymentID = $completeDeployment.deploymentid;
从网站上查看发布结果
发布完成后,我们也可以从网站上查看一下发布的结果。
Deployment label 是我们在发布脚本中设置的,一般会写入发布日期和版本号。
Deployment ID 是标识本次部署的 GUID。
总结,powershell 的 azure 模块已经提供了很完善的命令供我们进行自动化的发布使用,我们只要把这些命令组织成脚本就可以了。
Azure 基础:用 PowerShell 自动发布 CloudServices的更多相关文章
- Azure 基础:使用 powershell 创建虚拟网络
什么是虚拟网络 虚拟网络是您的网络在 Azure 云上的表示形式.您可以完全控制虚拟网络的 IP 地址.DNS 的设置.安全策略和路由表.您还可以更进一步,把虚拟网络划分为多个子网.然后用它们连接您的 ...
- Azure 基础:用 PowerShell 自动登录
PowerShell 是管理 Azure 的最好方式,因为我们可以使用脚本把很多的工作自动化.比如把 Azure 上的虚拟机关机,并在适当的时间把它开机,这样我们就能节省一些开支,当然我们同时也为减少 ...
- Azure 基础:使用 powershell 创建虚拟机
在进行与 azure 相关的自动化过程中,创建虚拟主机是避不开的操作.由于系统本身的复杂性,很难用一两条简单的命令完成虚拟主机的创建.所以专门写一篇文章来记录使用 PowerShell 在 azure ...
- 使用 PowerShell 自动登录Azure
PowerShell 是管理 Azure 的最好方式之一,通过使用 PowerShell 脚本可以把很多的工作自动化.比如对于 Azure 上的虚拟机,可以设置定时关机操作,并在适当的时间把它开机,这 ...
- 免费电子书:微软Azure基础之Azure Automation
(此文章同时发表在本人微信公众号"dotNET每日精华文章") Azure Automation是Azure内置的一项自动化运维基础功能,微软为了让大家更快上手使用这项功能,特意推 ...
- Azure 基础 : 使用 template 简化部署
笔者在前文中介绍了如何使用 PowerShell 脚本在 Azure 上创建虚拟主机.正如你所看到的,整个创建过程还是有点繁琐的,因为我们需要使用 PowerShell 脚本创建并关联所有相关的组件. ...
- Azure 基础 : 使用 Automation 定时开机
不知何时 Azure 为虚机提供了自动关机的功能.这是一个很棒的功能,可以帮助我们定时关闭虚机并释放掉资源以节省开支.如果某台虚机在夜间不需要提供服务,我们就可以把它配置为晚上的某个时间点自动关机: ...
- 探索 Windows Azure 网站中的自动伸缩功能
去年10月,我们发布了若干针对 WindowsAzure平台的更新,其中一项更新是添加了基于日期的自动伸缩调度支持(在不同的日期设置不同的规则). 在这篇博客文章中,我们将了解自动伸缩的概念,并 ...
- Azure 基础:Blob Storage
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在前文中介绍了 Table Storage 的基本 ...
随机推荐
- iOS开发——判断是否第一次启动
在我们做项目的时候,判断是否是第一次启动,还是比较常用的,比如,欢迎界面,只是第一次启动需要的调查问卷等等,目的明确,方法很多,这里介绍一种简单的. 在你需要只有第一次启动才跳转的地方写上 if(![ ...
- Android自定义控件(状态提示图表) (转)
源:Android自定义控件(状态提示图表) 源:Android应用开发 [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 前面分析 ...
- Codeforces #317 C.Lengthening Sticks(数学)
C. Lengthening Sticks time limit per test 1 second memory limit per test 256 megabytes input standar ...
- 设置MyEclipse黑色主题背景
设置MyEclipse黑色主题背景 1. 下载 http://eclipsecolorthemes.org/ 看哪个合适直接点击进入, 下载右边的epf 2. 下载完成...打开myeclipse. ...
- svn 安装网站
1.svn插件 http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
- MVC笔记2:mvc+jquery.validate.js 进行前端验证
1.引用如下js和css 代码 <link href="@Url.Content("~/Content/Site.css")" rel="sty ...
- eclipse hibernate plugin
JBoss Tools hibernate tools for eclipse plugins
- word页眉页脚 首页 索引 正文各不同的处理方法
1.在目录和正文之间,加入分隔符——分节符——下一页,然后再添加页眉页脚,然后再添加索引:
- 利用cocoapods创建基于git的私有库
上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...
- Java 之 web.xml(Java之负基础实战)
多个web.xml会同时生效,先加载tomcat下的web.xml,再加载网站目录下的web.xml. 1.tomcat自带的web.xml 在tomcat的conf目录下 2.自定义web.xml ...