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 的基本 ...
随机推荐
- ucos移植指南
指定堆栈数据类型(宽度) typedef unsigned int OS_STK; 指定Ucos移植方法3中保存cpu状态寄存器的变量的宽度 typedef unsigned int OS_CPU_S ...
- S3C2440触摸屏驱动详解
2440的触摸屏转换接口搭载在ADC接口之上,使用上比ADC接口多了一些花样,首先,触摸屏接口有几种转换模式 1. 普通转换模式 单转换模式是最合适的通用ADC转换.此模式可以通过设置ADCCON(A ...
- 关于iOS开发中info.plist文件的解读
我们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除. 下面就对其ke ...
- 【转】PHP生成随机密码的几种方法
使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码.随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法 ...
- R Student Companion(R语言初学指南)的源代码_数据_插图
下载内容见附件:http://files.cnblogs.com/files/ml-cv/data_And_R_script.zip.
- 安装及配置jdk和tomcat
系统变量 新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(如是 E:\Java\jdk1.7.0_25) 系统变量→找到 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\ ...
- APK的反编译
有秘密的地方就有见不得光的东西,我讨厌这些,所以对于某一个XX圈APP极其反感,感觉就像一个色情网站 一.ApkTool的使用 看了几个教程,自己下载的好像总是不完整,下载包解压后一个没有aapt.e ...
- n皇后问题 [随机化算法,拉斯维加斯算法]
问题: 如何能够在 n×n 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上. 分析: 这题常规的解法应该是回溯法, ...
- eclipse中集成svn maven开发手册---maven编译打包
使用eclipse中maven进行打包. 打好的包在相应的workspace下面会有一个release的文件夹,如图
- 笔记整理--socket_server
epoll精髓 - 彭帅 - 博客园 - Google Chrome (2013/10/11 20:47:52) epoll精髓 在linux的网络编程中,很长的时间都在使用select来做事件触发. ...