@@ -99,13 +99,21 @@ To avoid the race condition where a git tag references an image that doesn't exi
9999yet, follow this order for every release :
100100
101101` ` `
102- 1. Merge release PR to main (version bump + action.yml version update)
103- 2. workflow_dispatch → publish-docker.yml (builds, tests, pushes images to GHCR/DockerHub)
104- 3. Create git tag (e.g. 1.1.4) — image already exists, zero race condition
102+ 1. Open a release PR — the PR template includes a release checklist, use it
103+ 2. Merge release PR to main (version bump + action.yml version update)
104+ 3. workflow_dispatch → publish-docker.yml (builds, tests, pushes images to GHCR/DockerHub)
105+ 4. Create git tag (e.g. v2.1.0) — image already exists, zero race condition
105106` ` `
106107
107- When users then run `uses : SocketDev/socket-basics@1.1.4`, GitHub reads `action.yml`
108- at that tag, pulls `ghcr.io/socketdev/socket-basics:1.1.4`, and starts scanning
108+ > **Tip:** When opening the release PR, the [PR template](../.github/PULL_REQUEST_TEMPLATE.md)
109+ > includes a pre-filled release checklist covering the version bump, `action.yml` image ref
110+ > update, and CHANGELOG review. Don't skip it — the `action.yml` step in particular
111+ > is easy to forget and will break the action for anyone pinned to the new tag.
112+ > CI will also catch this automatically: `python-tests.yml` asserts the `action.yml`
113+ > image ref matches the version in `pyproject.toml` on every PR.
114+
115+ When users then run `uses : SocketDev/socket-basics@v2.1.0`, GitHub reads `action.yml`
116+ at that tag, pulls `ghcr.io/socketdev/socket-basics:2.1.0`, and starts scanning
109117immediately.
110118
111119# ## If you're running socket-basics outside of the GitHub Action
0 commit comments