一,引言

  结合前几篇文章,我们了解到 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. 第3章---数据探索(python数据挖掘)

    1.缺失值分析及箱型图 数据:catering_sale.xls(餐饮日销额数) 缺失值使用函数:describe()函数,能算出数据集的八个统计量 import pandas as pd cater ...

  2. app 好用的手机端开发调试工具插件 vconsole vue3

    效果:可以在手机上看控制台的内容 $ npm install vconsole 在main.js里引入 // 添加移动端log查看调试器 import Vconsole from 'vconsole' ...

  3. 用VUE框架开发的准备

    使用VUE框架编写项目的准备工作 防止我几天不打代码,忘记怎么打了 下载小乌龟拉取码云项目文件,用于码云仓库代码提交与拉取(可以不安装) 小乌龟要设置你的码云账号 密码 在控制面版 中 凭证里可以修改 ...

  4. 给jui(dwz)的菜单树换一套漂亮的图标

    JUI是一个免费开源的框架,在使用初期,会遇到一些麻烦,因为文档实在太少了,完全不知道从哪里入门,但是,一旦你深入学习后,你会发现,你的选择是不错的,它会提高你开发的效率,同时,你会深深爱上它. 目前 ...

  5. Keepalived+HAProxy基于ACL实现单IP多域名负载功能

    编译安装 HAProxy 新版 LTS 版本,编译安装 Keepalived 开启HAProxy多线程,线程数与CPU核心数保持一致,并绑定CPU核心 因业务较多避免配置文件误操作,需要按每业务一个配 ...

  6. Thingsboard3.2.2本地部署

    Thingboard3.2.2本地安装编译详细教程!!! 一:拉取源码. 创建一个空的文件夹 在此处使用git拉取源码. git clone https://github.com/thingsboar ...

  7. gerrit部署使用

    前言 gerrit是基于git的工具,code review功能是开发中很方便,此外它可以配合Jenkins进行自动化的编译工作.今天给大家分享一下gerrit在ubuntu的安装使用 作者:良知犹存 ...

  8. flutter系列之:创建一个内嵌的navigation

    目录 简介 搭建主Navigator 构建子路由 总结 简介 我们在flutter中可以使用Navigator.push或者Navigator.pushNamed方法来向Navigator中添加不同的 ...

  9. VsCode里面运行mvn命令显示The JAVA_HOME environment variable is not defined correctly

    问题描述 关于这个问题,就是环境配置出了问题!!! 问题解决 在settings.json里面,配置的环境的路径不能出错,我就是在配置的时候,名为Environments的文件夹写成Environme ...

  10. 关于两行代码让我时间无限拉长这件事------mainServlet

    在再一次尝试实现增删改查的功能时,出现了一些BUG,修改功能一直实现不了,查了好久的资料,这才发现问题 如上图所示,这个Servlet里面定义的方法,虽然很短,但是重要的很奥,改了好久都没注意到这个问 ...