【问题标题】:Add the Terraform Summary as a Github PR comment from Azure DevOps将 Terraform 摘要添加为来自 Azure DevOps 的 Github PR 评论
【发布时间】:2021-09-16 17:32:11
【问题描述】:

我们的组织将 Github 和 Azure DevOps 用于 CI/CD 目的。我正在尝试使用 Terraform 自动化基础设施部署。每当提出 PR 时都会触发管道。在使用 Azure DevOps 进行 terraform 部署期间,我希望构建管道向 PR 添加注释。 PR 应该是terraform plan 摘要供应用程序所有者查看。

我正在使用以下代码,但由于某种原因,该任务没有发布变量的内容。评论内容为$(terraformOutput)

我在这里遗漏了什么,或者我可以遵循任何文档/博客来完成这项任务吗?

    - task: AzureCLI@2
      displayName: 'Terraform Init and Plan'
      inputs:
        azureSubscription: <....>
        scriptType: 'bash'
        scriptLocation: 'inlineScript'
        inlineScript: |
          export ARM_CLIENT_ID=$servicePrincipalId
          export ARM_CLIENT_SECRET=$servicePrincipalKey
          export ARM_SUBSCRIPTION_ID=$(az account show --query id | xargs)
          export ARM_TENANT_ID=$(az account show --query tenantId | xargs)
          
          terraform init -reconfigure -backend-config=storage_account_name=<...> -backend-config=container_name=<..> -backend-config=key=<..> -backend-config=resource_group_name=<...>

          terraform workspace select prod || terraform workspace new prod
          terraform validate
          terraform plan -var-file=dummy.tfvars -no-color -out=tfplan
          terraform show -json terraform.plan > terraform.json
        addSpnToEnvironment: true
        workingDirectory: '$(System.DefaultWorkingDirectory)'
        failOnStandardError: true

    - powershell: |
        $terraformOutput = Get-Content "$(System.DefaultWorkingDirectory)/terraform.json" | ConvertFrom-Json
        
      name: terraformOutput
      displayName: Read terraform outputs

    - task: GitHubComment@0
      inputs:
        gitHubConnection: 'post-pr-comment'
        repositoryName: '$(Build.Repository.Name)'
        comment: '$(terraformOutput)'

【问题讨论】:

    标签: azure github azure-devops terraform pull-request


    【解决方案1】:

    你不能像这样传递变量。您需要创建一个azure pipeline variable via logging command,如下所示:

        - powershell: |
            $terraformOutput = Get-Content "$(System.DefaultWorkingDirectory)/terraform.json" | ConvertFrom-Json
            Write-Host "##vso[task.setvariable variable=testvar;]$terraformOutput"
          name: terraformOutput
          displayName: Read terraform outputs
    
        - task: GitHubComment@0
          inputs:
            gitHubConnection: 'post-pr-comment'
            repositoryName: '$(Build.Repository.Name)'
            comment: '$(testvar)'
    

    【讨论】:

      猜你喜欢
      • 2023-01-27
      • 2020-05-03
      • 2020-03-10
      • 2023-03-06
      • 2020-03-01
      • 1970-01-01
      • 2020-05-19
      • 2012-11-15
      • 2020-06-20
      相关资源
      最近更新 更多