一,引言

  结合前几篇文章,我们了解到 Azure Pipeline 完美的解决了持续集成,自动编译。同时也兼顾了 Sonarqube 作为代码扫描工具。接下来另外一个问题出现了,Azure DevOps 由于有人员限制,项目上不能给非开发人员或者外包成员开权限,这个时候就需要将编译好的程序包上传到公共网盘或者私有的远端存储账户,方便下载。那么我们今天就结合 Azure storage account 来实践一次利用 Azure Release Pipeline 自动将编译好的程序包发布到 Blob Storage 中。接下来就开始了今天的实践内容。

--------------------Azure DevOps 系列--------------------

1,Azure DevOps(一)基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译

2,Azure DevOps(二)Azure Pipeline 集成 SonarQube 维护代码质量和安全性

3,Azure DevOps(三)Azure Pipeline 自动化将程序包上传到 Azure Bolb Storage

二,正文

1,创建存储账户

我们登录 Azure Portal,点击 “create a resource” 创建新的资源

输入 “storage account” 查看资源,并进行创建

输入以下参数:

Resource group:“Web_Test_SA_RG”(已有的资源组,也可以选择创建新的)

Storage account name:“cloudplatform”

Performance 选择:“Standard”

Redundancy 选择:“Locally-redundant storage(LRS)”

点击 “Review” 进行创建前的预校验

预校验完成后,点击 “Create” 进行创建

等待创建完成后,跳转到该资源进行查看

2,为 service principal 授权

创建 sp 的过程大家可以参考:Azure AD(四)知识补充-服务主体

接下来就是为 Azure DevOps 的 Service connection (也就是服务主体设置权限)

选择 “cloudplatform =》Access Control”,点击 “+ Add”,添加角色分配

选择 “Storage Blob Data Contributor” 点击 “Next”

点击 “+ Select members”,选择好 service principal,点击 “select” 进行选择确定

点击 ”Review + assign“ 进行确定预览指派权限控制

稍后,我们就可以看到当前 sp 的权限信息,Scope 为 ”This resource“

3,创建 Release Pipeline

登录 azure devops 找到上一篇课程中创建的项目 “NetCore_WPF_Sample” 项目

选择 “Pilelines =》Releases”,点击 “New pipeline” 创建新的管道作业

点击 ”Artifacts + Add“ 添加发布源

Source type 选择:”Build“

Project:”NetCore_WPF_Sample“

Source(build pipeline)选择 :”yunqian44.Standard.Tool.Platform“(build Pipeline)

Dafault version:”Latest“

Source alias 选择默认

点击 ”Add“ 进行添加操作

接下来点击箭头所指的位置,添加任务项。

1)添加新的 ”Task“,输入 ”Azure CLI“ 进行查询,并添加

输入以下参数

Manage 选择:”vs“(自己项目所用的 serviceconnection)

Script Type:”Shell“

Script Location:”Inline script“

Inline Script:

# create azure resource group
az group create --location eastasia --name $(terraform_rg) # create azure storage account
az storage account create --name $(storage_account) --resource-group $(terraform_rg) --location eastasia --sku Standard_LRS # create storage account container for package blob
az storage container create --name $(storage_account_container) --account-name $(storage_account)

2)搜索 ”Archive files“,添加压缩任务

修改 需要压缩的文件或者文件夹的根目录

如下图所示:

源:改为 Build Pipeline 输入目录下的 drop 文件

目标:改为Build Pipeline 输入目录下已 BuildId 命名的压缩文件

接下来,我们添加 ”Azure file copy“,添加文件拷贝任务

输入一下参数,需要注意  存储账户,容器名称 Blob 前缀都已变量的形式体现

Source 选择 ”Archive“ 任务输出的压缩文件的目录

Azure Subscription 选择实际项目

Destination Type 选择:”Azure Blob“

RM Storage Account:$(storage_account) 

Container Name:$(storage_account_container)

Blob prefix:$(Build.BuildId).zip

最后,我们需要添加变量,选择 “Variable”,点击 “+” 进行操作,输入以下参数,并保存

Name Value
storage_account cloudplatform
storage_account_container wpf-client
terraform_rg Web_Test_SA_RG

点击 “Create release” 尝试运行 release pipeline

点击 “OK” 确认此操作

Release Pipeline 运行成功

存储账户的容器 “” 也被创建好了

编译好的程序包已被上传到 Storage Account 的 Container 中了

Bingo!!!!!

三,结尾

结合前两篇内容讲解的 Azure DevOps 系列,基本上从项目前期的持续集成,持续编译,到中期的代码静态扫描,再到后期的实现项目编译好的程序包自动发布到存储账号中,基本已经满足项目需求。DevOps 已从完美的升级为  DevSecOps 了。下一篇,对我我们目前的项目,我是如何实施DevOps的!!!尽请期待。

Azure Blob 存储文档 ----- 访问控制:https://learn.microsoft.com/zh-cn/azure/storage/blobs/data-lake-storage-acl-cli

作者:Allen

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

Azure DevOps(三)Azure Pipeline 自动化将程序包上传到 Azure Bolb Storage的更多相关文章

  1. Azure DevOps Pipelines执行RobotFramework自动化代码

    一.Azure DevOps介绍 1.什么是 Azure DevOps? Azure DevOps其实是VSTS(Visual Studio Team Service)更名后的名字.而VSTS是TFS ...

  2. [New Portal]Windows Azure Virtual Machine (13) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (3)

    <Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...

  3. Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage

    一,引言 本篇文章中,我门将学习如何利用 Terraform 将 文件以及文件夹上传到 Azure Blob Storage,这个对于我们来说很方便,可以将一些不重要的内容也存储在源代码管理工具中! ...

  4. 准备好要上传到 Azure 的 Windows VHD 或 VHDX

    在将 Windows 虚拟机 (VM) 从本地上传到 Azure 之前,必须准备好虚拟硬盘(VHD 或 VHDX). Azure 仅支持采用 VHD 文件格式且具有固定大小磁盘的第 1 代 VM. V ...

  5. [SDK2.2]Windows Azure Storage (15) 使用WCF服务,将本地图片上传至Azure Storage (上) 服务器端代码

    <Windows Azure Platform 系列文章目录> 这几天工作上的内容,把项目文件和源代码拿出来给大家分享下. 源代码下载:Part1 Part2 Part3 我们在写WEB服 ...

  6. [New Portal]Windows Azure Virtual Machine (15) 在本地制作数据文件VHD并上传至Azure(2)

    <Windows Azure Platform 系列文章目录> 在上一章内容里,我们已经将包含有OFFICE2013 ISO安装文件的VHD上传至Azure Blob Storage中了. ...

  7. [SDK2.2]Windows Azure Storage (16) 使用WCF服务,将本地图片上传至Azure Storage (上) 客户端代码

    <Windows Azure Platform 系列文章目录> 前一章我们完成了服务器端的代码,并且已经发布到了Windows Azure云端. 本章我们将实现客户端的代码,客户端这里我们 ...

  8. [New Portal]Windows Azure Virtual Machine (11) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (1)

    <Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...

  9. [New Portal]Windows Azure Virtual Machine (12) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (2)

    <Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...

  10. [New Portal]Windows Azure Virtual Machine (14) 在本地制作数据文件VHD并上传至Azure(1)

    <Windows Azure Platform 系列文章目录> 之前的内容里,我介绍了如何将本地的Server 2012中文版 VHD上传至Windows Azure,并创建基于该Serv ...

随机推荐

  1. 用echarts做兼容ie8的三测单(体温单) 代码全

    $.fn.extend({ /** * * @param { * UrineOutputData: 尿量数据 * OutputData: 出量数据 * InputData: 入量数据 * shitDa ...

  2. Ubuntu NVIDIA显卡驱动+CUDA安装(多版本共存)

    NVIDIA显卡驱动 1.禁止集成的nouveau驱动 solution 1 (recommand) # 直接移除这个驱动(备份出来) mv /lib/modules/3.0.0-12-generic ...

  3. python之pyqt5-第一个pyqt5程序-图像压缩工具(2.5版本,加入多线程进度条与文件drop)-小记

    (如想转载,请联系博主或贴上本博地址) 题外:关于python的多线程 python因为GIL的原因,只能利用到单核CPU性能.如程序内多是计算或循环,多线程无啥意义:如程序内多IO操作,多线程可以避 ...

  4. Konga-Kong网关的权限控制指定消费者

    刚开始陷入了误区了,网上很多参考例子都是如何实现身份证验证,而且看到konga上面配置身份插件的地方基本都有consumer一个配置项,一直纠结在这个如何通过key-auth实现指定的route或者s ...

  5. Promise静态方法实现(all race finally resolve reject)

    示例 // Promise.resolve() Promise.resolve(1).then((data) => { console.log(data) // 1 }) // Promise. ...

  6. opengauss集群安装报错

    DB_VERSION:opengauss 3.0.3 1.[GAUSS-51632] [GAUSS-51632] : Failed to do gs_sshexkey.Error: Please en ...

  7. js直接操作数据库会怎么样

    这几天刷脉脉的时候看到一个话题初看觉得可笑,再看陷入沉思,最后还是决定花点时间想清楚,写下来. 确实没见人这么干过,为什么呢? 技术限制 被技术限制了?据我所知目前没有面向js的数据库驱动,但反观现在 ...

  8. MySQL高性能索引策略和查询性能优化

    前缀索引和索引选择性 有时候需要索引很长的字符,这会让索引变得大且慢.一个策略是模拟哈希索引. 通常可以索引开始的部分字符,这样可以大大解约索引空间,提高索引效率.但这样会降低索引的选择性. 索引的选 ...

  9. 如何在Solidity中建立DAO(去中心化自治组织)?

    本文将帮助您理解 DAO 的概念,并帮助您构建一个基本的 DAO. 什么是 DAO? 您可以将 DAO 视为基于互联网的实体(比如企业),由其股东(拥有代币和比例投票权的成员)共同拥有和管理.在 DA ...

  10. 迁移学习《Cluster-Guided Semi-Supervised Domain Adaptation for Imbalanced Medical Image Classification》

    论文信息 论文标题:Cluster-Guided Semi-Supervised Domain Adaptation for Imbalanced Medical Image Classificati ...