Skip to content

Add weekly auto-tag for CalVer releases#20

Merged
wnstfy merged 1 commit into
mainfrom
feat/weekly-auto-tag
May 21, 2026
Merged

Add weekly auto-tag for CalVer releases#20
wnstfy merged 1 commit into
mainfrom
feat/weekly-auto-tag

Conversation

@wnstfy

@wnstfy wnstfy commented May 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Tuesday 08:00 UTC cron tags `vYYYY.MM.DD` when commits exist since the last release, then dispatches `release.yml` to publish the signed artifacts.

Why this shape

`GITHUB_TOKEN`-driven tag pushes deliberately don't trigger other workflows (GitHub's anti-recursion rule), so a tag-push alone wouldn't fire `release.yml`. Two clean options:

  1. PAT — push the tag with a personal access token (PAT pushes do trigger workflows).
  2. `workflow_dispatch` chain — push tag with `GITHUB_TOKEN`, then explicitly `gh workflow run release.yml --ref `.

This PR uses option 2 to avoid introducing another long-lived secret. `release.yml` gains `workflow_dispatch` and an `if: startsWith(github.ref, 'refs/tags/v')` gate so a manual dispatch from `main` is a no-op rather than producing broken artifacts.

Behaviour

Condition Result
Commits since last tag, today not yet used Tag `vYYYY.MM.DD`, release published.
Commits since last tag, today already used Tag `vYYYY.MM.DD.1` (or `.2`, ...).
No commits since last tag Skip silently.
`workflow_dispatch` with `force=true` Tag anyway.

Cadence sits after the Monday `weekly-audit` cron (06:00 UTC) and the Tuesday `scorecard` cron (07:20 UTC), so each weekly release reflects the latest CVE state and Scorecard run.

Test plan

  • `actionlint` passes (clean locally with `rhysd/actionlint:1.7.7`).
  • `scan`, `misconfig` informational checks pass.
  • After merge, manually fire `weekly-release.yml` via `gh workflow run weekly-release.yml -f force=true` to validate the full chain end-to-end on a controlled tag (and immediately verify the signed release the same way as v2026.05.21).
  • Confirm the next-Tuesday cron run is on the schedule.

Tuesday 08:00 UTC cron tags vYYYY.MM.DD if there are commits
since the last release tag, then dispatches release.yml via
`gh workflow run` (GITHUB_TOKEN-driven tag pushes don't trigger
other workflows, by design).

Same-day reruns get .N suffixes. workflow_dispatch with
force=true skips the "commits since" check for manual re-runs.

release.yml now accepts workflow_dispatch and gates the job to
refs/tags/v* so accidental dispatches against main are no-ops
without leaking partial artifacts.

CHANGELOG [Unreleased] documents the new cadence.
@wnstfy
wnstfy enabled auto-merge (squash) May 21, 2026 11:17
@github-actions

Copy link
Copy Markdown
Contributor

Trivy misconfiguration findings (HIGH + CRITICAL)

Findings below. Fix the issue or add an ignore entry to .trivyignore with a justification.


Report Summary

┌────────┬──────┬───────────────────┐
│ Target │ Type │ Misconfigurations │
├────────┼──────┼───────────────────┤
│   -    │  -   │         -         │
└────────┴──────┴───────────────────┘
Legend:
- '-': Not scanned
- '0': Clean (no security findings detected)

@wnstfy
wnstfy merged commit 8c6853b into main May 21, 2026
4 checks passed
@wnstfy
wnstfy deleted the feat/weekly-auto-tag branch May 21, 2026 11:18
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