我有很多次发生这种情况,我有一个用 YAML 编写的工作 Azure Pipeline。然后我更改了管道,然后我得到了错误There was a resource authorization issue
。通常我删除管道,重新创建它,然后它就可以工作了。但是,现在它不起作用,我不断收到以下错误:
所以,我点击这个小按钮,它会弹出说,资源已被授权。我尝试再次运行管道,我得到了同样的错误。
我是帐户/馆藏/组织管理员,最初创建了图书馆组,它被设置为启用对所有管道的访问。我已经尝试重命名管道并重新创建几次以相同的错误。如果无法将管道恢复到原始状态,我该怎么办?
- 编辑 -
只需将分支重置为管道的早期版本即可。但是,仍然不知道为什么将步骤移至 Stages 和 Jobs 会失败。
- 编辑 -
下面将是我最初使用的 YAML 和更新版本。当更新版本出现资源授权问题时,我执行了 agit log
并获取了先前有效提交的提交 id,并执行了git reset $commitId
. 将重置分支推回 Azure DevOps,然后它就神奇地工作了。
原始 Azure 管道 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
and 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 创建其初始管道的人不知道使用阶段和作业,因为管道生成器不会为他们执行此操作,而仅从步骤开始。