gpt4 book ai didi

具有 scriptPath 选项的 Azure DevOps AzureCLI 任务无法通过身份验证来创建 Azure 容器实例

转载 作者:行者123 更新时间:2023-12-02 07:58:24 25 4
gpt4 key购买 nike

我们在 Azure DevOps 中使用 YAML 管道。

管道中的任务之一是 AzureCLI,它创建 ACI 容器
我们在管道的前面步骤中构建和推送的图像。

当我们从外部脚本运行此任务时,它失败并显示消息:
容器组“***”中的镜像“***.azurecr.io/image:1.0”无法访问。
请检查镜像和注册表凭据。

当我们将脚本类型更改为 inlineScript 时,它可以正常工作。

以下是不起作用的表单(scriptPath)。

- task: AzureCLI@1
displayName: 'Run tests'
inputs:
azureSubscription: $(AZURE_SUBSCRIPTION)
scriptType: 'bash'
scriptLocation: 'scriptPath'
scriptPath: 'run_tests.sh'

这是有效的形式(inlineScript)

- task: AzureCLI@1
displayName: 'Run tests'
inputs:
azureSubscription: '$(AZURE_SUBSCRIPTION)'
scriptLocation: 'inlineScript'
inlineScript: 'az container create -g *** --registry-login-server ***.azurecr.io --registry-username *** --registry-password *** --image image -n test --cpu 1 --memory 8 --restart-policy Never --command-line "dotnet test.dll -n testApp -c 1000"'

脚本将超过一行。知道如何从外部脚本文件 (scriptLocation: 'scriptPath') 创建 Azure 容器实例吗?

最佳答案

我以两种方式创建了容器实例(脚本内联)。这是我的配置:

构建定义:


steps:
- task: replacetokens@3
inputs:
targetFiles: 'stackoverflow/12-container-instance/create-container-instance.sh'
encoding: 'auto'
writeBOM: true
actionOnMissing: 'warn'
keepToken: false
tokenPrefix: '#{'
tokenSuffix: '}#'
useLegacyPattern: false
enableTelemetry: true
- task: AzureCLI@2
displayName: 'Run tests 1'
inputs:
azureSubscription: '$(AzureSubscription)'
scriptType: 'bash'
scriptLocation: 'scriptPath'
scriptPath: 'stackoverflow/12-container-instance/create-container-instance.sh'

- task: AzureCLI@2
displayName: 'Run tests 2'
inputs:
azureSubscription: '$(AzureSubscription)'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: 'az container create -g TheCodeManual --name myapp2 --image $(Image) --registry-password $(RegistryPassword) --registry-user $(RegistryUser)'

create-container-instance.sh文件

az container create -g TheCodeManual --name myapp1 --image #{Image}# --registry-password #{RegistryPassword}# --registry-user #{RegistryUser}#

我使用 token 替换任务来避免在源代码管理中公开敏感数据。

但是,这两种方法都适合我。

我注意到我没有使用 --registry-login-server ***.azurecr.io 但我提供了图像的完整路径,如下所示:

az container create -g MyResourceGroup --name myapp --image myAcrRegistry.azurecr.io/myimage:latest --registry-password password --registry-user userName

关于具有 scriptPath 选项的 Azure DevOps AzureCLI 任务无法通过身份验证来创建 Azure 容器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61497425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com