Give each tracked package its own PR, and let a fresh branch tip fall back
The branch tracker stalled omarchy-dev and omarchy-settings-dev twice in a week: - All ~50 auto_merge packages rode one PR, so omasnap-git's failing smoke suite kept the quattro pins unmerged from Oct 4 to Oct 8 (#788). Each package now gets its own PR on auto/track-branches-<package>; packages pinned from the same branch share one, since they move in lockstep. A run closes tracker PRs that master has moved past, and the old single PR. - A branch tip younger than min_release_age held the whole branch, so a run that landed shortly after a quattro commit pinned nothing. The watch now falls back along first-parent history to the newest commit that has cleared the window, measured from clone time so siblings agree. - The every-2-hours schedule fired every 6 to 9 hours in practice; run it hourly.
This commit is contained in:
1 parent
1cef67f336
commit
a7f730d1e6
7 files changed
+187
-50
No files matched your search
@@ -73,13 +73,17 @@ because its published history counted every commit and the number must never
|
||||
go down.
|
||||
|
||||
`min_release_age` holds a branch tip until its commit timestamp is old enough.
|
||||
A fresh tip leaves the existing pin alone; the watch never walks backward to
|
||||
an older commit. This uses Git's committer date, not the time a commit was
|
||||
pushed. `BYPASS_MIN_RELEASE_AGE=1` bypasses the hold.
|
||||
A fresh tip falls back to the newest commit on the branch's first-parent
|
||||
history that has cleared the window, so a busy branch still advances; it never
|
||||
selects a commit from a merged side branch. This uses Git's committer date, not
|
||||
the time a commit was pushed, measured from when the run cloned the branch so
|
||||
packages pinned from it agree. `BYPASS_MIN_RELEASE_AGE=1` bypasses the hold.
|
||||
|
||||
Packages marked `"auto_merge": true` ride the unattended lane
|
||||
(`track-branches.yml`) instead of the reviewed sync PR: their bump PR is opened
|
||||
and auto-merged as soon as the build checks pass. The lane works with every
|
||||
and auto-merged as soon as the build checks pass. Each package gets its own
|
||||
PR on `auto/track-branches-<package>`, and packages that pin the same branch
|
||||
share one, so a package whose build fails holds back only itself. The lane works with every
|
||||
provider, not only branch watches, so it also carries release feeds trusted to
|
||||
ship without review: the browsers, large vendors' apps, Omacom's own projects,
|
||||
and vendor binaries that hold fresh releases with `min_release_age`. `bin/sync-upstream --lane
|
||||
@@ -229,8 +233,8 @@ These packages were already excluded from automatic AUR updates. The migration p
|
||||
`sync-upstream.yml` pushes its PR with the built-in `GITHUB_TOKEN`, so GitHub
|
||||
holds the PR's build and test runs for approval. The workflow labels its own
|
||||
PR `build-approved`, and its `approve` job releases the held runs for each
|
||||
commit it pushes. A push to an `auto/sync-*` branch, or to the tracker's
|
||||
`auto/track-branches`, does not cancel the PR's build in flight: the new
|
||||
commit it pushes. A push to an `auto/sync-*` branch, or to one of the
|
||||
tracker's `auto/track-branches-*` branches, does not cancel the PR's build in flight: the new
|
||||
build waits, then reuses every artifact the finished one uploaded.
|
||||
|
||||
Because of that push, GitHub starts no `pull_request_target` workflow for the
|
||||
|
||||
Reference in new issue
Block a user