YAML で記述された動作中の Azure パイプラインがある場合、これが何度も発生しました。次に、パイプラインを変更すると、エラーが発生しThere was a resource authorization issue
ます。通常、パイプラインを削除して再作成すると、機能します。ただし、現在は機能しておらず、次のエラーが継続的に発生します。
小さなボタンをクリックすると、「リソースが承認されました」というポップアップが表示されます。パイプラインを再度実行しようとすると、同じエラーが発生します。
私はアカウント/コレクション/組織管理者であり、すべてのパイプラインへのアクセスを有効にするように設定されているライブラリ グループを作成しました。パイプラインの名前を変更して、同じエラーに対して数回再作成しようとしました。パイプラインを元の状態に戻す以外に、どうすればよいですか?
- 編集 -
ブランチを以前のバージョンのパイプラインにリセットするだけでうまくいきました。ただし、ステップを Stages と Jobs に移動できなかった理由についてはまだ手がかりがありません。
- 編集 -
以下は、私が最初に使用した YAML と更新されたバージョンです。更新されたバージョンでリソース認証の問題が発生したとき、私は を実行し、git 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
とに移動しまし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は、最初からステージとジョブから始める必要があるということです。それ以外の場合は、作成された元のパイプラインに固執する必要があります。Azure DevOps に最初のパイプラインを作成させるほとんどの人は、ステージとジョブを使用することを知りません。パイプライン ジェネレーターはそれを行わず、ステップからのみ開始するためです。