jason-johnson / azure-pipelines-tasks-terraform

Azure Pipelines extension for Terraform
MIT License
122 stars 51 forks source link

publishPlanResults: No plans shown at all in the pipeline build view if at least one plan had no changes #390

Closed Ziemowit-LH closed 8 months ago

Ziemowit-LH commented 8 months ago

Describe the bug

With multiple plans in a pipeline run and at least one plan resulting in no changes to apply, no plans will be available in "Terraform Plan" tab.

No terraform plans have been published for this pipeline run. The terraform cli task must run plan with publishPlanResults: string (where string represents the plan name) to view plans.

To Reproduce

Prepare simple TF workspaces at least one of which will result in no planned changes.

- stage: stage1
  jobs:
  - ${{ each project in split('project1,project2,project3, ',')}}:
    - job: # working_on_${{ replace(project, '-', '_') }}
      displayName: Working on ${{project}}
    - task: TerraformCLI@0
      displayName: 'Terraform plan'
      inputs:
        command: plan
        publishPlanResults: ${{project}}-$(System.StageAttempt)
        commandOptions: -refresh=false -lock=false -detailed-exitcode -out=$(System.DefaultWorkingDirectory)/terraform.tfplan -var-file config/${{project}}.tfvars
        workingDirectory: ${{parameters.terraformConfigDirectory}}
        allowTelemetryCollection: false

Here, these are the results:

project1: Plan: 0 to add, 1 to change, 0 to destroy.
project2: No changes. Your infrastructure matches the configuration.
project3: Plan: 1 to add, 0 to change, 0 to destroy.

When attempting to view the Terraform Plan in build page on Azure DevOps no plans are shown but the "no plans have been published" message.

The Firefox console shows the following trace indicating it tried to fetch all the plans, got 404 for plan of project2 and gave up.

16:22:22.563 XHRPOST
https://dev.azure.com/azure-org/_apis/Contribution/HierarchyQuery/project/project-guid
[HTTP/2 200 OK 62ms]

16:22:22.912 GET
https://charleszipp.gallerycdn.vsassets.io/extensions/charleszipp/azure-pipelines-tasks-terraform/1.0.6/1696238676685/views/terraform-plan/.dist/index.html
[HTTP/2 200 OK 0ms]

16:22:22.968 Partitioned cookie or storage access was provided to “https://charleszipp.gallerycdn.vsassets.io/extensions/charleszipp/azure-pipelines-tasks-terraform/1.0.6/1696238676685/views/terraform-plan/.dist/index.html” because it is loaded in the third-party context and dynamic state partitioning is enabled.
16:22:22.983 GET
https://charleszipp.gallerycdn.vsassets.io/extensions/charleszipp/azure-pipelines-tasks-terraform/1.0.6/1696238676685/views/terraform-plan/.dist/index.js
[HTTP/2 200 OK 0ms]

16:22:23.081 XHRPOST
https://dev.azure.com/azure-org/_apis/Contribution/HierarchyQuery/project/project-guid
[HTTP/2 200 OK 205ms]

16:22:23.081 XHRPOST
https://dev.azure.com/azure-org/_apis/Contribution/HierarchyQuery/project/project-guid
[HTTP/2 200 OK 64ms]

16:22:23.194 XHRPOST
https://dev.azure.com/azure-org/_apis/Contribution/HierarchyQuery/project/project-guid
[HTTP/2 200 OK 53ms]

16:22:23.273 GET
https://cdn.vsassets.io/ext/ms.vss-build-web/remote-services-content/ms.vss-build-web.remote-services-content.es6.36_5sF.min.js

16:22:23.319 GET
https://cdn.vsassets.io/ext/ms.vss-features/ext-services-content/ms.vss-features.ext-services-content.es6.1l_b9M.min.js
[HTTP/2 200 OK 0ms]

16:22:23.328 XHRGET
https://dev.azure.com/azure-org/_apis/ResourceAreas/965220d5-5bb9-42cf-8d67-9b146df2a5a4
[HTTP/2 200 OK 65ms]

16:22:23.423 XHRPOST
https://dev.azure.com/azure-org/_apis/WebPlatformAuth/SessionToken
[HTTP/2 200 OK 220ms]

16:22:23.651 Some cookies are misusing the recommended “SameSite“ attribute 2
16:22:23.651 Cookie “WebPlatform-SessionTokens” has been rejected for invalid domain. SessionToken
16:22:23.652 Cookie “WebPlatform-SessionTokens” has been rejected for invalid domain. SessionToken
16:22:23.658 XHROPTIONS
https://dev.azure.com/azure-org/PROJECTX/_apis/build/builds/174797
[HTTP/2 200 OK 47ms]

16:22:23.721 XHRGET
https://dev.azure.com/azure-org/PROJECTX/_apis/build/builds/174797
[HTTP/2 200 OK 78ms]

16:22:23.862 XHROPTIONS
https://dev.azure.com/azure-org/PROJECTX/_apis/build/builds/174797/Timeline
[HTTP/2 200 OK 56ms]

16:22:23.934 XHRGET
https://dev.azure.com/azure-org/PROJECTX/_apis/build/builds/174797/Timeline
[HTTP/2 200 OK 95ms]

16:22:24.092 XHROPTIONS
https://dev.azure.com/azure-org/project-guid/_apis/build/builds/174797/attachments/terraform-plan-results
[HTTP/2 200 OK 50ms]

16:22:24.142 XHRGET
https://dev.azure.com/azure-org/project-guid/_apis/build/builds/174797/attachments/terraform-plan-results
[HTTP/2 200 OK 94ms]

16:22:24.283 XHROPTIONS
https://dev.azure.com/azure-org/project-guid/_apis/build/builds/174797/c60c1ad8-e0e8-40e2-a94a-f43badffc357/ab689943-7f2a-522d-34f0-5cf1abe66b58/attachments/terraform-plan-results/project3-1
[HTTP/2 200 OK 60ms]

16:22:24.390 XHRGET
https://dev.azure.com/azure-org/project-guid/_apis/build/builds/174797/c60c1ad8-e0e8-40e2-a94a-f43badffc357/ab689943-7f2a-522d-34f0-5cf1abe66b58/attachments/terraform-plan-results/project3-1
[HTTP/2 200 OK 111ms]

16:22:24.842 XHROPTIONS
https://dev.azure.com/azure-org/project-guid/_apis/build/builds/174797/c60c1ad8-e0e8-40e2-a94a-f43badffc357/90d5e110-95ac-5fae-525b-f2bec8414cdd/attachments/terraform-plan-results/project2-1
[HTTP/2 200 OK 54ms]

16:22:24.937 XHRGET
https://dev.azure.com/azure-org/project-guid/_apis/build/builds/174797/c60c1ad8-e0e8-40e2-a94a-f43badffc357/90d5e110-95ac-5fae-525b-f2bec8414cdd/attachments/terraform-plan-results/project2-1
[HTTP/2 404 Not Found 94ms]

16:22:25.062 Uncaught (in promise) Error: Failed to download plain plan: TFS.WebApi.Exception: 404: Not Found
    r azdo-attachment-service.ts:118
    l plan-summary-tab.tsx:19
    promise callback*s plan-summary-tab.tsx:19
    s plan-summary-tab.tsx:19
    s plan-summary-tab.tsx:19
    getAttachmentContent azdo-attachment-service.ts:113
    r azdo-attachment-service.ts:38
    a plan-summary-tab.tsx:19
    promise callback*s plan-summary-tab.tsx:19
    a plan-summary-tab.tsx:19
    promise callback*s plan-summary-tab.tsx:19
    a plan-summary-tab.tsx:19
    promise callback*s plan-summary-tab.tsx:19
    a plan-summary-tab.tsx:19
    promise callback*s plan-summary-tab.tsx:19
    s plan-summary-tab.tsx:19
    s plan-summary-tab.tsx:19
    getAttachments azdo-attachment-service.ts:31
    r plan-summary-tab.tsx:37
    s index.tsx:29
    s index.tsx:29
    componentDidMount plan-summary-tab.tsx:33
    React 2
    unstable_runWithPriority scheduler.production.min.js:19
    React 9
    r index.tsx:8
    promise callback*8312/r< index.tsx:26
    8312 index.tsx:29
    Webpack 3
azdo-attachment-service.ts:118:18
jason-johnson commented 8 months ago

Duplicate of #342 but thanks for the additional details. I will reference this from there.