Skip to content

Pin action and Docker image refs to SHAs; add GPG commit signing#527

Merged
IanButterworth merged 3 commits intomasterfrom
ib/pin
Mar 24, 2026
Merged

Pin action and Docker image refs to SHAs; add GPG commit signing#527
IanButterworth merged 3 commits intomasterfrom
ib/pin

Conversation

@IanButterworth
Copy link
Copy Markdown
Member

@IanButterworth IanButterworth commented Mar 24, 2026

  • action.yml: use Docker image SHA digest instead of floating version tag
  • example.yml, README.md, IMPROVEMENTS.md, .github/workflows/tagbot.yml: pin JuliaRegistries/TagBot action refs to commit SHA with # v{version} comment
  • bin/publish.py: build and push versioned Docker image during workflow_dispatch (before PR is opened), extract SHA digest for action.yml pin; on PR merge, checkout master, update all action ref pins and push, then tag and create release always targeting the merge commit SHA, then push floating Docker tags
  • DEVGUIDE.md: update release process steps to reflect new flow
  • .github/workflows/publish.yml: inline GPG key import as bash (import, configure git signing + identity from key UID, delete key on cleanup); gate job on production environment so secrets require human approval to access (requires creating the environment in Settings → Environments with required reviewers, and moving secrets into the environment secret store)

@IanButterworth IanButterworth force-pushed the ib/pin branch 5 times, most recently from 01aed51 to 8416ae6 Compare March 24, 2026 20:37
- action.yml: use Docker image SHA digest instead of version tag
- example.yml, README.md, IMPROVEMENTS.md, .github/workflows/tagbot.yml:
  pin JuliaRegistries/TagBot refs to commit SHA with version comment
- bin/publish.py: build and push versioned Docker image during
  workflow_dispatch (before PR), extract digest for action.yml pin;
  on PR merge, checkout master, update all action ref pins and push,
  then tag and create release always targeting the merge commit SHA,
  then push floating Docker tags
- .github/workflows/publish.yml: import GPG key via crazy-max/ghaction-import-gpg,
  set git identity from key UID, enable signed commits for all subsequent steps

Co-authored-by: Claude <claude@anthropic.com>
- environment: production gates the job on required reviewers, protecting
  all secrets from exfiltration via a compromised write-access token
- GPG key import and git signing config inlined as bash (replaces
  crazy-max/ghaction-import-gpg) for full auditability; key is deleted
  from the keyring in a cleanup step with if: always()

Requires creating a 'production' environment in Settings → Environments
with required reviewers. Secrets should be moved into the environment
secret store so they are only accessible to approved runs.
@IanButterworth IanButterworth merged commit 6075672 into master Mar 24, 2026
2 checks passed
@IanButterworth IanButterworth deleted the ib/pin branch March 24, 2026 21:11
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