Skip to content

Azure Pipelines: 11 TiB of Pipeline Artifacts is excessive #1653

@StephanTLavavej

Description

@StephanTLavavej

According to (internal) https://dev.azure.com/vclibs/_settings/storage , we're consuming 5.01 GiB for "Pipeline caching" (which is expected and good), and 11.09 TiB for "Pipeline artifacts". 🙀 While https://dev.azure.com/vclibs/_settings/billing notes that there's "No limit, pay for what you use" and "Artifacts now bills for packages-only", 11 ters are probably going to attract someone's attention (probably someone whose job title is Person In Charge Of Sending Scary Emails About Not Spending All Of Microsoft's Money On Hard Drives, which is a totally cool and necessary job, we just don't want to get those scary emails about the STL).

Questions of varying importance:

  • What are pipeline artifacts?
    • Are they the result of building the STL? And/or are they the result of building all of the STL's tests?
  • Are we intentionally storing pipeline artifacts?
    • I don't expect runs to output anything other than logs.
  • What's causing us to store pipeline artifacts, so we can stop doing this?
    • I suspect it's the occurrences of publishArtifact added by Build, but don't run, ARM/ARM64 tests #1505:
      - name: publishArtifact
      type: boolean
      default: false

      - publish: $(${{ parameters.buildOutPutLocationVar }})/out
      artifact: '${{ parameters.targetPlatform }}-$(System.JobPositionInPhase)-libs-$(System.JobId)'
      condition: ${{ parameters.publishArtifact }}
      displayName: 'Publish Libs and Headers Artifact'
      - publish: $(${{ parameters.buildOutPutLocationVar }})/tests
      artifact: '${{ parameters.targetPlatform }}-$(System.JobPositionInPhase)-tests-$(System.JobId)'
      condition: ${{ parameters.publishArtifact }}
      displayName: 'Publish Tests Artifact'

      - template: run-tests.yml
      parameters:
      hostArch: ${{ parameters.hostArch }}
      targetPlatform: ${{ parameters.targetPlatform }}
      targetArch: ${{ parameters.vsDevCmdArch }}
      displayName: 'Build Tests'
      publishArtifact: true
    • The Publish Tests Artifact appears to indicate that this is indeed saving the result of building all of the STL's tests. As this is done only for the cross-build (i.e. ARM/ARM64, and not x86/x64), and I am not aware of anything that consumes these artifacts, I suspect that they are unnecessary (at least for now; possibly the intention was to copy them to ARM/ARM64 machines for execution).
  • Can we delete the pipeline artifacts we've accumulated so far?
    • https://dev.azure.com/vclibs/STL/_settings/settings has retention policies, although I am not immediately sure how to change them.
    • Perhaps this is lower priority; given that we haven't received any scary emails yet, perhaps we can wait 30 days (or whatever, but that appears to be an upper bound) for the accumulated artifacts to expire.

Metadata

Metadata

Assignees

No one assigned

    Labels

    fixedSomething works now, yay!infrastructureRelated to repository automation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions