Upstream release notifications and updates¶
The Monitor upstream releases workflow runs daily at 06:13 UTC (08:13
Berlin summer time; 07:13 winter time). GitHub may delay scheduled jobs. It also
supports manual dispatch with dry_run enabled by default. A dry run produces a
release-plan artifact and summary without creating issues/PRs or executing
downloaded binaries.
New compatibility lines¶
Discovery reads stable Podman releases and the official Docker Engine static archive indexes. Docker candidates must have both Engine and rootless archives for AMD64 and ARM64. Drafts, prereleases and incomplete releases are excluded. Source errors fail the run; an unavailable API is never reported as “no new releases”.
The monitor compares releases with existing payload definitions, starting at
the oldest tracked line. A missing Podman minor line or Docker major line
creates an assigned issue labelled upstream-release. Docker 20.10 remains a
fixed minor compatibility line. Existing image families are retained.
Each issue includes release links and an integration checklist. Repeated daily checks do not create duplicates. A newer release in the same missing line adds one update comment without overwriting a maintainer's checklist. A closed issue records a decision and is not automatically reopened or recreated.
Assignees are configured in .github/upstream-releases.json. Assignment generates
GitHub notifications; email delivery depends on each account's notification
settings. New image families still require implementation and review.
Existing image updates¶
Renovate continues updating patches within the existing Podman minor lines. For Docker, the monitor proposes updates within each existing major line (or 20.10). Active legacy compatibility images can receive upstream releases in their own line; updates are skipped when all consumers have disabled admission.
Native AMD64 and ARM64 jobs download the official Engine/rootless archives and
inspect their binaries using --version. These jobs have read-only repository
permissions and never receive the PR automation credential. Archive hashes
record the downloaded HTTPS content; they are not upstream signatures.
Both architectures must agree on Engine, CLI, containerd, runc, RootlessKit and recorded source revisions. A separate job validates this evidence and updates the payload, all four archive hashes, both image versions/descriptions, component provenance and generated catalogue together. It never executes archive binaries. Image names and lifecycle settings are preserved.
Patch PRs enable platform auto-merge and pass normal PR CI and merge-queue checks. Minor PRs require review. Queued candidates are left alone, and branch updates never force-push over contributor changes. A rejected release is not proposed again every day. Conflicts, inconsistent evidence and CI failures require investigation; automation does not bypass them.
One-time PR credential setup¶
The notification job uses the built-in GITHUB_TOKEN with issues: write.
Docker PR publication uses the repository secret RELEASE_AUTOMATION_TOKEN.
Use a dedicated repository-scoped bot credential with Contents, Pull
requests, and Issues read/write access. A GitHub App installation token
must be refreshed before it expires; do not store a short-lived token and expect
it to work indefinitely. A fine-grained PAT also requires renewal before expiry
and any approval required by organisation policy.
For a dedicated fine-grained PAT:
- Create it under the bot account's Settings → Developer settings → Personal
access tokens → Fine-grained tokens. Select
Strukturpilotenas resource owner and grant access only tocontainers, with the three permissions above. Set an expiry and arrange renewal; obtain organisation approval if required. - Open this repository's Settings → Secrets and variables → Actions → New
repository secret. Name it
RELEASE_AUTOMATION_TOKENand paste the token directly into GitHub's secret field. - Run Monitor upstream releases on
mainwithdry_run=false. Check that the Docker update PR starts normal CI and patch updates enter the merge queue.
This separate credential is required because GitHub's built-in Actions token cannot add PRs to a merge queue. It also lets pushes/PR creation trigger normal CI without manual workflow approval. No host credential is copied into repository secrets by this tooling. The credential is available only to the final PR job on the default branch.
Keep repository auto-merge, Required CI, and the merge queue enabled. A missing
credential fails the PR job explicitly while release notifications can still
run. Do not replace it with GITHUB_TOKEN or bypass checks to work around that
failure.
Operations¶
Open Actions → Monitor upstream releases → Run workflow on main. Start
with dry_run=true to inspect the plan. Use dry_run=false for notifications,
native probes and update PRs. The workflow retains its plan and native evidence
for seven days. It serializes scheduled/manual executions to avoid concurrent
issue and branch updates.
Inspect failed discovery or probe steps before retrying. An incomplete upstream publication can become eligible on the next daily check. If PR creation or queue entry fails, inspect the dedicated token's expiry, repository selection and permissions. If CI fails, investigate the affected build; keep its required checks enabled.