- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从事一个 Azure 项目,该项目只能使用 Visual Studio CI 中的 ARM 模板进行部署,并且我们只有 Azure 门户的读取访问权限。
目前我收到以下错误,并且无法发布。我也无法从 Portal 中删除部署,因为我只有配置构建和发布阶段的权限,我想知道是否可以创建任何阶段来删除以前的部署。
到目前为止,我尝试了一些方法,例如使用内联 PowerShell 命令 Remove-AzureRmResourceGroupDeployment ,在资源部署阶段之前删除 Microsoft.Resouces/deployments 类型的资源组,但没有他们中的一些人工作了。
[error]Creating the deployment 'azuredeploy-2017721-715' would exceed the quota of '800'. The current deployment count is '800', please delete some deployments before creating a new one. Please see https://aka.ms/arm-deploy for usage details.
最佳答案
这是一个允许您以并行方式删除此类部署的脚本。您还可以将其用于 Azure DevOps 中的 Azure PowerShell 任务。如果您有有关身份验证的问题,请查看此处:Azure credentials have not been set up or have expired, please run Connect-AzAccount
Param(
[string]
[Parameter(Mandatory = $true)]
$subscriptionId,
[string]
[Parameter(Mandatory = $true)]
$tenantId,
[string]
[Parameter(Mandatory = $true)]
$resourceGroupName,
[int]
[Parameter(Mandatory = $true)]
$numberOfDeploymentsToKeep,
[int]
[Parameter(Mandatory = $true)]
$batchSize
)
try {
$c = Get-AzContext
}
catch {
$c = $null
}
if (!$c -or !$c.Account) {
Connect-AzAccount -Subscription $subscriptionId -Tenant $tenantId
} else {
Select-AzSubscription -Subscription $subscriptionId -Tenant $tenantId
}
# ----------------------------------
# Get Deployments
# ----------------------------------
#$dateBeforeDeleteDeployments = Get-Date -Year 2018 -Month 06 -Day 30
#$deploymentsToDelete = Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName | Where-Object { $_.Timestamp -le $dateBeforeDeleteDeployments }
$currentDeployments = Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName
$currentNumberOfDeployments = ($currentDeployments | Measure-Object).Count
$numberOfDeploymentsToRemove = $currentNumberOfDeployments - $numberOfDeploymentsToKeep
if ($numberOfDeploymentsToRemove -lt 0) {
throw "Number of deployments to remove is < 0..."
}
if ($numberOfDeploymentsToRemove -eq 0) {
Write-Host "Number of deployments to remove is 0..."
return
}
Write-Host "Number of Deployments to remove: '$numberOfDeploymentsToRemove'..."
$deploymentsToDelete = $currentDeployments | Sort-Object -Property Timestamp | Select-Object -First $numberOfDeploymentsToRemove
$deploymentsToDelete | ForEach-Object {$i=0; $j=0; $deploymentsToDeleteBatched=@{}} {
if($i -ne $batchSize -and $deploymentsToDeleteBatched["Batch $j"]) {
$deploymentsToDeleteBatched["Batch $j"]+=$_
$i+=1
}
else {
$i=1
$j+=1
$deploymentsToDeleteBatched["Batch $j"]=@($_)
}
}
Write-Host "Created $($deploymentsToDeleteBatched.Count) batches..."
# ----------------------------------
# Execute deletion in parallel
# ----------------------------------
$jobNames = @()
foreach ($batchkey in $deploymentsToDeleteBatched.Keys) {
$deploymentsToDeleteBatch = $deploymentsToDeleteBatched.$batchkey
$logic = {
Param(
[object]
[Parameter(Mandatory = $true)]
$ctx,
[object]
[Parameter(Mandatory = $true)]
$deploymentsToDeleteBatch,
[string]
[Parameter(Mandatory = $true)]
$resourceGroupName
)
foreach ($deploymentToDelete in $deploymentsToDeleteBatch) {
$deploymentName = $deploymentToDelete.DeploymentName
Remove-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $deploymentName -DefaultProfile $ctx -ErrorAction Stop
Write-Host "Deleted Deployment '$deploymentName' from '$($deploymentToDelete.Timestamp)'..."
}
}
$jobName = ([System.Guid]::NewGuid()).Guid
$jobNames += $jobName
$jobObject = Start-Job $logic -Name $jobName -ArgumentList (Get-AzContext), $deploymentsToDeleteBatch, $resourceGroupName
}
while (Get-Job -State "Running") {
Write-Host "---------------------------------------------------------------"
Write-Host "Jobs still running..."
Get-Job | Format-Table
Write-Host "---------------------------------------------------------------"
Start-Sleep -Seconds 10
}
Write-Host "Jobs completed, getting output..."
Write-Host "---------------------------------------------------------------"
foreach ($jobName in $jobNames) {
Write-Host "Output of Job '$jobName'..."
Receive-Job -Name $jobName
Write-Host "---------------------------------------------------------------"
}
Write-Host "Done..."
关于powershell - VSTS - 在发布期间删除以前的部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794872/
我的公司有许多 Visual Studio Team Services 帐户。我们有一个用于内部开发,一个用于我们的每个客户。我们在内部开发帐户 (https://{dev-account}.visu
我需要为 VSTS 构建摘要选项卡开发一个相当复杂的 UI。我使用 VS Code 作为代码编辑器。以下 url 描述了如何使用 Edge 浏览器进行调试,但是这种方法需要不断地打包和部署扩展到 VS
情况是这样的:有两家公司参与一个项目。 CompanyA管理一个VSTS帐户,该帐户下有几个源代码存储库,一些是TFVC,一些是Git。目标是最终在属于 CompanyB 的 VSTS 帐户下获得存储
情况是这样的:有两家公司参与一个项目。 CompanyA管理一个VSTS帐户,该帐户下有几个源代码存储库,一些是TFVC,一些是Git。目标是最终在属于 CompanyB 的 VSTS 帐户下获得存储
我正在使用 Karma-coverage 生成代码覆盖率。我可以在 http-server 上托管我的输出覆盖文件夹并在本地查看它。 如何使此报告在 VSTS 代码覆盖率选项卡上可见? 我是否需要重新
将构建的 Docker 镜像从构建管道传递到发布管道 我目前正在 VSTS 构建管道中成功构建 Docker 镜像。我想获取此构建的镜像,然后将其发布为构建工件,以便 VSTS 发布管道可以使用我们的
我有一个具有以下内容的解决方案: 具有旧式 csproj 的多个库 net461 多个项目 net461 与新的 csproj(Net 核心库和我们的应用程序,但 tatgets net461)并引用
我们在 VSTS 中配置了多个使用不同数据库的发布环境。这些环境中的每个数据库都包含控制应用程序工作方式的特定元数据。此元数据由管理工具定期配置给用户。 我们希望备份此元数据并在每次发布时将其 che
我确实使用 Azure、Terraform、Ansible、GIT 和 Visual Studio Team Service (VSTS) 设置了基础架构即代码 (IAC) 构建管道。我还在本地计算机
我创建了一个 .npmrc 文件,将其配置为使用 VSTS pacakge feed,但我的所有公共(public)依赖项都不会安装(你知道,react、lodash ...) 似乎一旦我将 .npm
有谁知道 VSTS 如何为构建创建关联提交列表? 我专门寻找在创建新分支时创建的那些。目前它似乎只是创建一个过去几次提交到分支的列表。 理想情况下,我想要类似于 git log master.. 的东
我正在运行一个带有两个代理的本地 TFS 实例。代理 1 有一个本地路径,用于存储我们的工件。代理 2 必须通过网络路径 (\agent1\artifacts...) 访问该路径。 从代理 1 下载工
下面是我编写的变量声明和 power shell 脚本,用于在队列新构建中更新构建变量 声明: Power shell 脚本: $fileData = Get-Content -Path C:\bui
我正在尝试修改 VSTS 和 MS Project 之间的字段映射。问题是命令 exe 无法在 TFS 作为 SaaS 上运行,特别是在我们正在使用的 Azure 云上。 我可以使用什么来首先下载映射
我可以通过硬编码来到达工件位置:$(System.DefaultWorkingDirectory)\_Testing-CI\test\ 但是我可以以某种方式从版本中的某些变量获取源别名和工件名称吗?
我正在从事一个 Azure 项目,该项目只能使用 Visual Studio CI 中的 ARM 模板进行部署,并且我们只有 Azure 门户的读取访问权限。 目前我收到以下错误,并且无法发布。我也无
我正在尝试使用Linux Shell和Docker在VSTS上运行以下嵌套命令,因此我可以停止和删除所有基于“jspsample”图像的容器: docker rm $(docker stop $(do
我正在尝试使用VSTS和docker-compose配置持续交付,我想将其推送到Azure容器注册表。 这是我在VSTS上的构建定义: 并且我收到关于生成结果的错误消息: No such comman
尝试从VSTS Online克隆大型仓库时,大约克隆了1%时,出现以下错误: remote: Found 24565 objects to send. (83 ms) Receiving
我使用VSTS做了一个存储库并克隆了它,并正确设置了所有SSH凭据,但是每次仍然要我输入用户名和密码。怎么来的? 最佳答案 问题是我将存储库来源作为https网址。必须是SSH。 git remote
我是一名优秀的程序员,十分优秀!