AzureBlob 文件复制 - 清理 $web

AzureBlob File Copy - clean up $web

我为我的 Angular 8 应用程序配置了一个 Azure Release Pipeline,它将编译后的应用程序数据复制到 Azure Blob 存储帐户中的 $web。 它会覆盖现有文件,这很好。 但一些由 Angular 编译器创建的编译文件在每次编译时都有不同的名称。 这导致 $web.

中过时文件的数量不断增加

AzureBlob 文件复制任务不提供最初 clear/clean 启动 $web 的选项。

如何实现 $web 的初始清理?

您可以使用 Azure CLI 任务调用 az cli commands az storage blob delete-batch 以在 运行 Azure File Copy task 之前清理容器 $web。示例代码如下:

az storage blob delete-batch -s mycontainer --account-name mystorageaccount --account-key mystorageaccountkey

Azure DevOps 管道任务在识别名为“$Web”的容器时出现问题,该容器是在 Azure 存储中创建静态网站时默认创建的。

我使用了 Azure CLI 任务并编写了以下 powershell 脚本来实现此目的:

$connectionContext = (Get-AzStorageAccount -ResourceGroupName <Your resource group name> -AccountName <Your storage account name>).Context

$Container = Get-AzStorageContainer -Context $connectionContext -Name '$web'

write-host  clearing files in container $Container.Name

Get-AzStorageBlob -Container $Container.Name -Context $connectionContext | ForEach-Object {
    write-host removing $_.Name
    $_ | Remove-AzStorageBlob
}

如果您使用带有 powershell 内联脚本的基于 Windows 的代理,请将双引号更改为单引号。

az storage blob delete-batch --account-name <account_name> --source '$web'