Skip to content

ci: run mirror-upstream and aggregate weekly instead of 4x daily - #116

Open
dnplkndll wants to merge 1 commit into
ledoentfrom
ci/weekly-mirror-and-aggregate
Open

ci: run mirror-upstream and aggregate weekly instead of 4x daily#116
dnplkndll wants to merge 1 commit into
ledoentfrom
ci/weekly-mirror-and-aggregate

Conversation

@dnplkndll

Copy link
Copy Markdown

Why

mirror-upstream ticked every 6 hours and aggregate daily. That tempo
was set on 2026-07-13 because Tecnativa-pace upstream outran a daily tick and
open PRs drifted from their base. This fork is no longer an active contribution
target, so that justification has lapsed.

The cost is not local to this repository. The schedule cascades:

mirror-upstream  ──force-push 19.0──▶  aggregate (push trigger)
                                            │
                                            └─force-push `aggregated`──▶  tests
                                                                          pre-commit
                                                                          Test OpenUpgrade migration

Four of those a day saturate the org-wide 20-concurrent-job cap on the Free
plan. Observed today: 18 running + 20 queued OpenUpgrade jobs, with
unrelated ledoent repositories queueing behind them for ~10 minutes.

What changed

Workflow Before After
mirror-upstream.yml 0 */6 * * * (4x daily) 0 5 * * 0 — Sun 05:00 UTC
aggregate.yml 0 12 * * * (daily) 0 6 * * 0 — Sun 06:00 UTC

The one-hour gap is deliberate. aggregate must run after the mirror or it
rebuilds against a stale 19.0 — the existing comment documents this ordering
and it is preserved.

Nothing else is touched: generate-analysis-cron (weekly Mon),
generate-testdb-cron (monthly) and stale (weekly Sun) are unchanged, as are
all push/pull_request triggers.

Tradeoff

The detection window for an upstream OCA merge silently conflicting with a
repos.yaml branch — the l10n_es / OCA#5646 case in the existing comment —
widens from a day to a week. That is the real cost, and it is acceptable
while this is not a contribution target.

workflow_dispatch is retained on both and is now the expected way to force a
refresh between ticks.

https://claude.ai/code/session_01JYdwXZhodF13nMyBxPRSe2

mirror-upstream ticked every 6h and aggregate daily. That tempo was set when
this fork was an active contribution target and open PRs drifted from their
base faster than a daily tick could keep up. It no longer is one.

The cost is not local to this repository. Mirroring force-pushes 19.0, which
fires aggregate's push trigger, which rebuilds and force-pushes 'aggregated',
which in turn runs tests, pre-commit and the migration suite. Four of those
cascades a day saturate the organisation-wide 20-concurrent-job cap on the
Free plan — unrelated repositories were observed queueing behind 18 running
and 20 queued OpenUpgrade jobs.

Both now run Sunday early morning, mirror at 05:00 UTC and aggregate at 06:00.
The one-hour gap preserves the existing ordering requirement: aggregate must
run after the mirror, or it rebuilds against a stale 19.0.

The tradeoff is the detection window for an upstream merge conflicting with a
repos.yaml branch, which widens from a day to a week. Acceptable while this is
not a contribution target. workflow_dispatch is retained on both for manual
catch-up, and is now the expected way to force a refresh.

Claude-Session: https://claude.ai/code/session_01JYdwXZhodF13nMyBxPRSe2
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