一,引言

  结合前几篇文章,我们了解到 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. 微信小程序按下去的样式

    微信小程序设置 hover-class,实现点击态效果 目前支持 hover-class 属性的组件有三个:view.button.navigator. 不支持 hover-class 属性的组件,同 ...

  2. 部门mysql操作

      use test_db; -- 删除表 drop table if exists t1_profit; drop table if exists t1_salgrade; drop table i ...

  3. NX 二次开发 多个功能集成一个DLL的方法

    用C++做NX二次开发,一个功能建一个工程,管理起来很不方便,在网上找了些资料学习,成功的把多个功能做到一个工程里(多功能集成到一个DLL). 1.首先要了解外挂的菜单文件的基础,要实现多个功能集合在 ...

  4. vs2019升级到16.8编译报razortaghelper 任务意外失败的错误

    为了体验.net 5,把vs升级到了最新版本16.8,然后编译原来的项目(.net core 2.2),报了以下错误: 解决方法如下: 删除C:\Program Files\dotnet\sdk\Nu ...

  5. 【Golang】数据库使用

    非结构化方式获取数据库结果 动态列获取结果 https://github.com/go-sql-driver/mysql/wiki/Examples#rawbytes

  6. week3题解

    1.寄包柜 看到题目最容易想到开二位数组 但数据量过大,因此需要map #include <bits/stdc++.h> using namespace std; map<int,m ...

  7. P2962 [USACO09NOV]Lights G(Meet In The Middle)

    [USACO09NOV]Lights G 题目描述 给出一张n个点n条边的无向图,每个点的初始状态都为0. 你可以操作任意一个点,操作结束后该点以及所有与该点相邻的点的状态都会改变,由0变成1或由1变 ...

  8. bootstrapv4轮播图去除两侧阴影及线框

    一.前提条件:  在使用bootstrap v4中的轮播图组件时,两侧默认出现阴影,且轮播组件示例不一致! 二.bootstrap文档组件展示与实际应用 1.官方文档展示如下:没有阴影 2.实际应用情 ...

  9. fatal: unable to access ' ' OpenSSL SSL_read: Connection was reset, errno 10054

    描述: git clone ...时报错 fatal: unable to access 'https://github.com/github-eliviate/papers.git/': OpenS ...

  10. 自用nodejs安装笔记

    下载Nodejs 进入Nodejs官网https://nodejs.org/zh-cn/ 下载 安装Node.js 检查Nodejs和npm包管理器是否安装成功 用管理员打开cmd控制台 命令行输入n ...