Skip to content

ci(docker): stop uploading workflow artifacts from image builds - #39

Merged
hbrombeer merged 1 commit into
mainfrom
ci/no-artifact-storage
Oct 19, 2026
Merged

hbrombeer merged 1 commit into
mainfrom
ci/no-artifact-storage

Conversation

@hbrombeer

@hbrombeer hbrombeer commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Why

Private repositories pay for artifact storage out of the org's Actions budget. Once it is spent, every upload fails with Failed to CreateArtifact: Artifact storage quota has been hit. game-survivalgames run 39265980480 pushed its image and then went red in Generate SBOM: anchore/sbom-action uploads the SPDX file as an artifact by default (upload-artifact: true). The build record upload from build-push-action failed in the same run too, only as a warning.

Live artifacts in private repos before this change: ~960 .dockerbuild build records (~63 MiB) and ~130 MiB of SBOMs (sbom-* plus anchore's groundsgg-<repo>_<tag>.spdx.json).

What

  • docker-gradle-build-push.yml: remove the anchore scan and the sbom-* upload. The push build sets sbom: true, so BuildKit attaches an SPDX SBOM attestation to the image in GHCR, next to the provenance attestation the images already carry (the index already has an attestation manifest, so the media type does not change). Read it with docker buildx imagetools inspect ghcr.io/groundsgg/<repo>:edge --format '{{ json .SBOM }}'. The PR build (load: true) is unchanged.
  • docker-gradle-build-push.yml, platform-test-preview.yml: DOCKER_BUILD_RECORD_UPLOAD: false on the job. The build summary stays.
  • Contract tests: new test that the image jobs upload no artifacts and the push build attests an SBOM. The runner assertions still expected grounds-runners from before ci: run private repos on RunsOn instead of hbr1 #37, so the contract job has been failing on main since then. They now check the RunsOn label.

Consumers checked

Nothing in the org downloads sbom-*, the anchore .spdx.json artifacts or the build records. The only download-artifact users are grounds-vanilla's release (its own compliance artifacts), resourcepacks and publish-openapi-snapshot, none of which are touched here.

All callers use @main, so merging this fixes every repo on the shared workflow (15 private ones currently hold artifacts) without per-repo changes.

Private repositories pay for artifact storage out of the org's Actions
budget. Once it is spent, every upload fails: game-survivalgames run
39265980480 pushed its image and then went red in "Generate SBOM", whose
anchore/sbom-action uploads the SPDX file as an artifact by default.

- docker-gradle-build-push: drop the anchore SBOM scan and the sbom-*
  upload. The push build now attaches an SPDX SBOM attestation to the
  image in GHCR (`sbom: true`), next to the provenance attestation it
  already had. Nothing downloaded the sbom-* artifacts.
- docker-gradle-build-push, platform-test-preview: set
  DOCKER_BUILD_RECORD_UPLOAD=false so build-push-action no longer uploads
  the .dockerbuild record. The build summary stays.
- Contract tests: assert no artifact uploads, and bring the runner
  assertions up to date with the RunsOn routing from #37, which left the
  contract job failing on main.
@hbrombeer
hbrombeer merged commit c14bb06 into main Oct 19, 2026
3 checks passed
@hbrombeer
hbrombeer deleted the ci/no-artifact-storage branch October 19, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant