zoukankan      html  css  js  c++  java
  • Azure 基础:用 PowerShell 自动发布 CloudServices

    在软件的开发过程中,自动化的编译和部署能够带来很多的优势。下面我们聊聊如何自动发布云应用程序到 azure 上的 cloud services。

    打包要发布的内容

    首先使用 msbuild 编译 *.ccproj 文件,我们需要使用生成产物中的:
    app.publishxxx.cspkg
    app.publishyyy.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.publishxxx.cspkg
    $configuration = app.publishyyy.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 模块已经提供了很完善的命令供我们进行自动化的发布使用,我们只要把这些命令组织成脚本就可以了。

  • 相关阅读:
    Visual SVN1.5以上版本下载及破解过程
    C#线程系列讲座(2):Thread类的应用
    a标签的href 和onclick
    Windows 服务快捷启动命令
    iframe 跨域自动适应高度
    修正认知:string、Empty和null三者的正确区别

    线索二叉树
    最大连续子序列
    寻找最近点对
  • 原文地址:https://www.cnblogs.com/sparkdev/p/6358987.html
Copyright © 2011-2022 走看看