使用 PowerShell 自动化 CloudServices 发布

在软件的开发过程当中,自动化的编译和部署可以带来不少的优点。若是能够经过一个脚本实现软件的自动化部署,那么就能够节省大量的时间去作其它事情。shell

下面介绍如何将云应用程序经过 PowerShell 自动发布到 azure 的 cloud services 上。windows

1、打包须要发布的内容app

首先使用 msbuild 编译 *.ccproj 文件,在生成的全部文件中,咱们须要用到如下两个:网站

app.publish\xxx.cspkgui

app.publish\yyy.cscfgthis

2、下载 publishsettings 文件blog

有如下两种方法能够下载 publishsettings 文件:ip

一、若是没有 Azure 帐号,则须要先注册帐号;若是已有 Azure 帐号,可直接登陆下面的地址,下载 publishsettings 文件(国际版):开发

https://manage.windowsazure.com/publishsettings/index部署

下载到的文件的文件名:

xxx5-18-2016-credentials.publishsettings

其中xxx是你的 subscription 名称。

二、在 powershell 中执行 Get-AzurePublishSettingsFile 命令,实现下载 publishsettings 文件的目的。

3、安装 powershell 的 azure module

访问 https://azure.microsoft.com/en-us/downloads/#cmd-line-tools 网址, 点击 “Command-line tools->PowerShell” 下面的 “Windows install” 下载安装包。

1

运行安装包,安装 azure modules。

4、建立自动发布的脚本

一、导入 azure module

在 powershell 中执行命令 Import-Module Azure,导入 azure module

二、设置脚本中使用的变量,其中部分参数变量须要根据本身的信息设定

$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 不存在,则须要先创建 deployment。若是 deployment 已经存在,则须要更新 deployment。

命令逻辑以下:

$deployment = Get-AzureDeployment -ServiceName $service -Slot $slot -ErrorVariable a -ErrorAction silentlycontinue

if ($deployment.Name -ne $null)

{

    # deployment 已经存在,使用 Set-AzureDeployment 命令进行更新,第7步会详细说明

}

else

{

    # 须要使用 New-AzureDeployment 命令新建 deployment,第6步会详细说明

}

六、新建 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;

八、从网站上查看发布结果

发布完成后,能够从网站上查看发布结果。

2

其中,Deployment label 是在发布脚本中设置的,通常会写入发布日期和版本号;Deployment ID 是标识本次部署的 GUID。

总结,PowerShell 的 azure 模块已经提供了很完善的命令供咱们进行自动化的发布使用,咱们只须要将这些命令组织成脚本就能够了。

相关文章
相关标签/搜索