在软件的开发过程中,自动化的编译和部署能够带来很多的优势。如果可以通过一个脚本实现软件的自动化部署,那么就可以节省大量的时间去做其它事情。

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

一、打包需要发布的内容

首先使用 msbuild 编译 *.ccproj 文件,在生成的所有文件中,我们需要用到以下两个:

app.publish\xxx.cspkg

app.publish\yyy.cscfg

二、下载 publishsettings 文件

有以下两种方法可以下载 publishsettings 文件:

1、如果没有 Azure 账号,则需要先注册账号;如果已有 Azure 账号,可直接登录下面的地址,下载 publishsettings 文件(国际版):

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

下载到的文件的文件名:

xxx5-18-2016-credentials.publishsettings

其中xxx是你的 subscription 名称。

2、在 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。

四、创建自动发布的脚本

1、导入 azure module

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

2、设置脚本中使用的变量,其中部分参数变量需要根据自己的信息设定

$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”

3、导入 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 
}

4、设置当前的 subscription

从上一步中可以发现,机器上可能同时保存了多个 subscription 的信息。那么,当执行发布操作时,默认会使用哪个 subscription 的信息呢?这里存在“当前 subscription”的概念,发布操作会使用当前 subscription 的信息进行发布。因此,在发布操作之前一定要设置本次发布使用的 subscription 为当前 subscription。

执行 Select-AzureSubscription -SubscriptionName $subscription –Current 命令进行设置

5、检查 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步会详细说明

}

6、新建 deployment 并检查部署是否成功的命令

New-AzureDeployment -Slot $slot -Package $package -Configuration $configuration -label $deploymentLabel -ServiceName $service;

$completeDeployment = Get-AzureDeployment -ServiceName $service -Slot $slot;

//检查部署是否成功

$completeDeploymentID = $completeDeployment.deploymentid;

7、更新已经存在的部署并检查部署是否成功的命令

Set-AzureDeployment -Upgrade -Slot $slot -Package $package -Configuration $configuration -label $deploymentLabel -ServiceName $service -Force;

$completeDeployment = Get-AzureDeployment -ServiceName $service -Slot $slot;

//检查部署是否成功

$completeDeploymentID = $completeDeployment.deploymentid;

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

发布完成后,可以从网站上查看发布结果。

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

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

使用 PowerShell 自动化 CloudServices 发布相关推荐

  1. 华为补助武汉员工,最高每日 2000 元;iPhone SE 2 量产或推迟;PowerShell 7.0 发布 | 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦 ...

  2. React Native项目自动化打包发布

    今天这篇文章的目的是在rn项目的构建,并不会涉及到rn框架或者使用的讲解,说起构建,特别是前端构建大家应该很快会想到webpack.Grunt. Gulp等.而这些工具在rn项目中就显得有些鸡肋.所以 ...

  3. 蓝天采集器自动化采集发布

    介绍: 致力于网站数据自动化采集发布,系统采用PHP+MySQL开发,可部署在云端服务器,使数据采集便捷化,智能化,云端化 网盘下载地址: http://kekewl.cc/TbiPpCgo2RQ0 ...

  4. ssrs批量权限管理_管理SSRS安全性并使用PowerShell自动化脚本

    ssrs批量权限管理 So much has changed with Reporting Services 2016 but in terms of security it's the same u ...

  5. powershell自动化操作AD域、Exchange邮箱系列(1)——powershell 简介

    从今天开始,系统的整理一下使用powershell自动化管理AD域账号.exchange邮箱账号的流程,最终我们将实现一个通过Web端调用powershell脚本实现的域控 邮箱管理系统. 目录 一. ...

  6. iOS自动化打包发布之fastlane 实现 发布AppStore 蒲公英

    iOS自动化打包发布之fastlane 实现 fastlane官方文档 前提插件配置 首先要安装xcode-select 然后安装fastlane sudo gem install fastlane ...

  7. linux maven 发布项目,Linux下基于Maven的自动化打包发布项目

    基于Maven的自动化打包发布项目 1.配置项目文件 prolist.config svn://10.1.23.215/Hive/HiveUDFIK hive-ik jar 10.130.2.245 ...

  8. python3自动化软件发布系统_Python 3自动化软件发布系统 -Django 2实战

    第1章 Python基础 1.1 Python基本数据类型的常用操作 1.1.1 数字(Number)--人生不能只会做减法 1.1.2 字符串(String)--一入编码深似海 1.1.3 列表(L ...

  9. 支持国内版Office 365的PowerShell模块现已发布

    作者:陈希章 发表于2017年5月12日 上一篇文章我详细介绍了如何在PowerShell中访问到Office 365的Graph API,在文章结尾处我留了一个问题,希望有朋友可以根据那个思路,尝试 ...

最新文章

  1. javascript常用工具类封装
  2. 不恰当使用read会造成服务器阻塞
  3. 局域网屏幕共享软件 推荐_局域网共享软件,详细教您局域网共享软件如何使用...
  4. 面试的问题 及回答
  5. cpc卡内计费信息异常包括_今日头条信息流广告投放效果好吗?信息流广告计费方式怎么收费?...
  6. GC算法-标记压缩算法
  7. DWZ富客户端框架设计思路与学习建议
  8. 直方图尖峰python_直方图、密度图、散点图,python数据可视化方法,你要的都在这里...
  9. MOS管正确选择的步骤
  10. python从入门到实践答案博客园_《Python从入门到实践》--第八章 函数 课后练习4...
  11. c语言 error c4028,在Visual Studio2010中,“警告C4028:正式參數1與聲明不同”顯示。...
  12. php获取微信uninoid_PHP微信小程序之获取并解密用户数据获取openId和unionId,,小程序登陆...
  13. Dell居然用EMS给我寄发票
  14. JAVA版我的世界如何开第三方服务器
  15. Java输出流FileOutputStream使用详解
  16. Unity Shader标准光照模型——高光反射
  17. 小程序 实现星星评分(共10分),含有半星
  18. rar文件解压后可以删除吗?rar文件删除后怎么恢复?
  19. 【收藏】最靠谱的笔记本电脑购买指南,让你少走弯路!
  20. 公有云在发展,存储卖得更好了

热门文章

  1. T-SQL Enhancement in SQL Server 2005[下篇]
  2. 关于学习新知识的一点想法
  3. Core Data 学习笔记(二)被管理对象模型
  4. python 压缩文件(3)
  5. 送出15个Google Wave邀请,需要的赶快
  6. list 分组求和_数据分析-python-分组聚合-2
  7. Linux 删除除某个文件之外的所有文件
  8. XStream---Java对象和XML之间的转换器
  9. HDU-1241-Oil Deposits
  10. SingToken全球首款区块链智能AI音乐钱包