我有一个Azure DevOps构建管道,它将整个存储库发布为与发布管道一起使用的工件。
# Publish artifacts to be used in release
- task: PublishBuildArtifacts@1
displayName: 'publish artifacts'
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)'
ArtifactName: 'TerraformModule'
publishLocation: 'Container'构建管道触发了发布管道的创建,在这里我尝试部署terraform配置。
我可以在这个管道中成功地运行terraform init,但是当我尝试运行plan或apply时,我会得到以下错误:

从屏幕截图看,它似乎试图从/usr/local/bin执行命令,而不是我在步骤中指定的命令。被这个弄糊涂了。下面是我的plan步骤的yaml:
steps:
- task: ms-devlabs.custom-terraform-tasks.custom-terraform-release-task.TerraformTaskV3@3
displayName: 'terraform plan'
inputs:
provider: aws
command: plan
workingDirectory: '/home/vsts/work/r1/a/_terraform/TerraformModule/Projects/Potentium/Prod'
environmentServiceNameAWS: 'AWS-Terraform-Build'我手动将workingDirectory更改为下载构建管道中的工件的位置。例如,请参见下面的日志:
2022-08-14T23:41:31.3359557Z Downloaded TerraformModule/Projects/Potentium/Prod/main.tf to /home/vsts/work/r1/a/_terraform/TerraformModule/Projects/Potentium/Prod/main.tf构建管道中的plan步骤执行时不会出现任何问题,因此我有一种感觉,这与下载步骤中出现的伪制品/提取有关。寻求任何建议。
发布于 2022-08-17 10:46:28
当使用ExtractFiles@1对terraform做类似的事情时,我在提取阶段也遇到了类似的问题。我认为其中有一个错误,我无法让它将文件解压缩回System.DefaultWorkingDirectory的根目录,除非根文件夹包含在归档文件中,我使用的是ArchiveFiles@2。所以我和/opt/az_devops/_work/*/s/s一起结束了
我的解决方案是执行一个命令来进行提取。System.DefaultWorkingDirectory根的提取没有问题
请记住,如果您正在运行后续的terraform计划,默认情况下,工作目录System.DefaultWorkingDirectory将在运行期间更改。因此,请确保使用这些变量,而不是显式引用。
https://stackoverflow.com/questions/73355865
复制相似问题