在使用YAML编写的有效Azure管道中,我曾多次遇到这种情况。然后,我更改管道,然后得到错误There was a resource authorization issue
。通常,我删除管道,重新创建它,然后它可以工作。但是,现在它不起作用,并且我不断收到以下错误:
因此,我单击小按钮,它弹出,说资源已被授权。我尝试再次运行管道,并且遇到相同的错误。
我是帐户/收款/组织管理员,最初创建了库组,在该组中将其设置为启用对所有管道的访问。我尝试重命名管道,并多次将其重新创建为相同的错误。没有将管道恢复到原始状态,我该怎么办?
-编辑-
只需将分支重置为早期版本的管道即可。但是,仍然不知道为什么将步骤移到阶段和乔布斯失败了。
-编辑-
下面将是我最初使用的YAML及其更新的版本。当更新的版本出现资源授权问题时,我执行了一个git log
并获取了之前有效的提交的提交ID,并执行了git reset $commitId
。将reset分支推回到Azure DevOps,然后神奇地工作了。
原始Azure Pipeline YAML:
---
trigger: none
variables:
- name: ProjectFolder
value: tf-datafactory
- group: 'Deploy_Terraform_Library_Group'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: replacetokens@3
displayName: Replace tokens
inputs:
targetFiles: '$(System.DefaultWorkingDirectory)/$(ProjectFolder)/variables.tf'
encoding: 'auto'
writeBOM: true
verbosity: 'detailed'
actionOnMissing: 'warn'
keepToken: false
tokenPrefix: '#{{'
tokenSuffix: '}}#'
- task: AzureCLI@2
displayName: Get the storage account key
inputs:
azureSubscription: '$(ARM.SubscriptionEndpoint)'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
export ContainerAccessKeyExport=$(az storage account keys list \
--resource-group $(StorageResourceGroupName) \
--account-name $(StorageAccountName) \
--query "[0].value")
echo "##vso[task.setvariable variable=ContainerAccessKey]$ContainerAccessKeyExport"
...
然后我将这些steps
移到stages
和jobs
中。
---
parameters:
- name: TerraformAction
displayName: 'Will Terraform Create or Destroy?'
type: 'string'
default: 'create'
values:
- 'create'
- 'destroy'
trigger: none
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: 'Terraform'
displayName: 'Terraform Stage'
variables:
- name: 'TerraformAction'
value: '${{ parameters.TerraformAction }}'
- name: ProjectFolder
value: tf-datafactory
jobs:
- job: 'DeployTerraform'
displayName: 'Terraform Deploy Data Factory'
condition: eq(variables['TerraformAction'], 'create')
variables:
- group: 'Deploy_Terraform_Library_Group'
steps:
- task: replacetokens@3
displayName: Replace tokens
inputs:
targetFiles: '$(System.DefaultWorkingDirectory)/$(ProjectFolder)/variables.tf'
encoding: 'auto'
writeBOM: true
verbosity: 'detailed'
actionOnMissing: 'warn'
keepToken: false
tokenPrefix: '#{{'
tokenSuffix: '}}#'
- task: AzureCLI@2
displayName: Get the storage account key
inputs:
azureSubscription: '$(ARM.SubscriptionEndpoint)'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
export ContainerAccessKeyExport=$(az storage account keys list \
--resource-group $(StorageResourceGroupName) \
--account-name $(StorageAccountName) \
--query "[0].value")
echo "##vso[task.setvariable variable=ContainerAccessKey]$ContainerAccessKeyExport"
...
-编辑-
我从中得到的收益:https://aka.ms/yamlauthz是您要么需要从一开始就从Stages和Jobs开始,否则您必须坚持创建的原始管道。大多数让Azure DevOps创建其初始管道的人都不知道要使用Stages和Jobs,因为管道生成器不会为他们执行此操作,而仅以Steps开始。