0

我有很多次发生这种情况,我有一个用 YAML 编写的工作 Azure Pipeline。然后我更改了管道,然后我得到了错误There was a resource authorization issue。通常我删除管道,重新创建它,然后它就可以工作了。但是,现在它不起作用,我不断收到以下错误:

修改后 Azure DevOps YAML 管道授权错误

所以,我点击这个小按钮,它会弹出说,资源已被授权。我尝试再次运行管道,我得到了同样的错误。

我是帐户/馆藏/组织管理员,最初创建了图书馆组,它被设置为启用对所有管道的访问。我已经尝试重命名管道并重新创建几次以相同的错误。如果无法将管道恢复到原始状态,我该怎么办?

- 编辑 -

只需将分支重置为管道的早期版本即可。但是,仍然不知道为什么将步骤移至 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移入stagesand 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 创建其初始管道的人不知道使用阶段和作业,因为管道生成器不会为他们执行此操作,而仅从步骤开始。

4

0 回答 0