Repository navigation
ci(internal-workflows): add monthly release-sweep for release-please PRs - #900
Merged
Merged
Conversation
Adds a scheduled workflow that runs ppat/homelab-ops-actions's release-sweep composite action (pinned to v2.3.2) on the 15th of each month, merging this repo's open release-please pull request once it is a non-breaking patch/minor bump with no hold label, no conflicts, and all checks green. A pull_request trigger scoped to the workflow file itself exercises the same action in dry-run mode for visibility when the workflow is edited, without merging anything. Scoped internal-workflows (rule 5: .github/workflows/** is this repo's own machinery) rather than github-actions, since this adds a new workflow rather than only moving an existing uses: ref. Typed ci rather than feat because the pairing rule reserves feat/fix/perf/ refactor/revert for the image/template/empty scopes that force a release of this repo's two deliverables — release-sweep only merges release-please's own PR and ships neither the image nor the template itself. The live monthly run authenticates with a freshly minted GitHub App token (HOMELAB_BOT_APP_ID/HOMELAB_BOT_APP_PRIVATE_KEY) scoped to contents:write and pull-requests:write — the same identity this repo's release.yaml already uses to run release-please itself. The workflow's own permissions stay read-only; only the App token carries write access, and only on the schedule trigger. The checkout step uses fetch-depth: 0 rather than this repo's usual fetch-depth: 1, because release-sweep's staleness guard compares the release PR's parent commit against origin/main and needs full history to do it.
homelab-agent-bot
Bot
force-pushed
the
feat/release-sweep-schedule
branch
from
September 1, 2026 17:12
dbe40a2 to
a6afc59
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
.github/workflows/release-sweep.yaml, a scheduled workflow that evaluates this repo's open release-please pull request on the 15th of every month and merges it automatically when it is safe to do so — a non-breaking patch/minor bump, no hold label, no merge conflicts, and every check green. It reusesppat/homelab-ops-actions'srelease-sweepcomposite action, pinned to its current tagged releasev2.3.2.Why
This repo's release-please PR otherwise sits until someone manually clicks merge; a monthly sweep clears the routine, eligible ones without waiting on a human, while still holding back anything breaking or already flagged.
Scope and type, per this repo's new commit taxonomy (#899)
Scoped
internal-workflows(rule 5:.github/workflows/**is this repo's own machinery), notgithub-actions— that scope is reserved for a diff that only moves an existinguses:ref, and this adds a new workflow. Typedci, notfeat: the pairing rule reservesfeat/fix/perf/refactor/revertfor theimage/template/empty scopes that force a release of this repo's two deliverables, andrelease-sweepmerges release-please's own PR without shipping the image or the template itself.How it's wired
schedule(17 3 15 * *, monthly on the 15th) runs live;pull_requestscoped to this workflow file runs the same action indry_runmode for visibility whenever the workflow itself changes — it never merges anything.actions/create-github-app-token, usingHOMELAB_BOT_APP_ID/HOMELAB_BOT_APP_PRIVATE_KEY— the same App identityrelease.yamlalready uses to run release-please itself — scoped tocontents:writeandpull-requests:write. Thepull_requesttrigger uses the default read-onlygithub.tokeninstead, since it only dry-runs. The workflow's ownpermissions:block stays read-only either way; write access comes solely from the minted token.fetch-depth: 0: unlike every other workflow in this repo (which use the defaultfetch-depth: 1), this one needs full history —release-sweep's staleness guard compares the release PR's parent commit againstorigin/main, which isn't possible with a shallow clone.Test plan
pre-commit run --all-files(yamllint, commitlint) passes locally.actionlintpasses locally.pull_requestdry-run trigger fires on this PR and reports what it would (not) merge — check its job output before merging.workflow_dispatchtrigger — omitted deliberately to keep the token/dry-run branching unambiguous, matching the source action's own dogfood workflow).