Skip to content

ci: publish GitHub release with artifact metadata on every tag - #230

Merged
sebasnallar merged 1 commit into
betafrom
feat/release-artifact-metadata
Aug 26, 2026
Merged

ci: publish GitHub release with artifact metadata on every tag#230
sebasnallar merged 1 commit into
betafrom
feat/release-artifact-metadata

Conversation

@sebasnallar

Copy link
Copy Markdown
Contributor

Summary

Companion to nullplatform/actions-nullplatform#93 and nullplatform/scopes-lambda#41, bringing this repo's releases up to the same standard: every tag now gets a GitHub release whose body lists each published image with its digest and a copyable pinned reference.

Today a tag push publishes 3 images to ECR and registers artifacts, but creates no GitHub release at all — consumers have nowhere to see or copy what was published.

Change

New finalize-release job after the three publish + register jobs. It upserts the release for the tag:

  • No release for the tag → creates one titled <tag> whose notes are the Artifacts table.
  • Release exists → appends the table once (skips when the digests are already recorded) and force-publishes (--draft=false, repairing any draft orphaned by a tag delete/re-push).

The table (one row per image — containers, scheduled-task, containers-datadog):

Image Digest Pinned reference
public.ecr.aws/nullplatform/scopes/containers:vX.Y.Z sha256:… public.ecr.aws/nullplatform/scopes/containers@sha256:…

permissions.contents goes readwrite (needed to create/edit releases).

Unlike scopes-lambda this repo cannot adopt the chained release-publish-oci reusable workflow as-is: it fans out three images with an ordering dependency (datadog overlay is FROM the containers base) and its tags are human-pushed (no release-please), so the tag trigger works fine here — only the release upsert was missing.

Test plan

  • YAML validated.
  • After merge: push the next semver tag and verify the run ends with a published release carrying the three-row Artifacts table.

🤖 Generated with Claude Code

Tags produced ECR images and registered artifacts, but no GitHub
release — the published digests were invisible to consumers. Add a
finalize job that upserts a release for the tag whose body carries an
Artifacts table for all three images (containers, scheduled-task,
containers-datadog): tag, digest, and the copyable pinned
image@digest reference. Idempotent: an existing release only gains
the table once, and re-runs with the same digests no-op.

Same information the chained release pipeline writes in scopes-lambda
(actions-nullplatform release-publish-oci); hand-rolled here because
this repo fans out three images with an ordering dependency and its
tags are human-pushed rather than cut by release-please.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@sebasnallar
sebasnallar requested a review from fedemaleh August 25, 2026 16:40
@sebasnallar
sebasnallar merged commit dc522df into beta Aug 26, 2026
3 checks passed
@sebasnallar
sebasnallar deleted the feat/release-artifact-metadata branch August 26, 2026 12:32
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.

2 participants