CI runs every pushed head, even after a newer push to the same branch has replaced it #216

Closed
opened 2026-10-02 04:08:59 +02:00 by clawbot · 1 comment
Collaborator

.gitea/workflows/check.yml runs script/cibuild on every push to every branch, and every run waits its turn on the runner the whole fleet shares. A branch pushed again (a rebase, a rework) leaves its older run queued, and it still runs later for a head nobody needs. On 2026-10-02 dnswatcher had 50 queued runs, 45 of them for heads already replaced; the run that would show whether next is green again waited behind them.

Definition of done

  • A new push to a branch cancels that branch's older queued or running check, if the Gitea Actions on git.eeqj.de supports it (concurrency with cancel-in-progress, keyed on the branch); shown by pushing a branch twice in a row and watching the first run end as cancelled. If it is not supported, say so on this issue with what was tried, and stop.
  • The checkout step does not leave the token in .git/config (persist-credentials: false): script/cibuild does not need it, and since #210 .git reaches the Docker build context.
  • Runs on next and main are never cancelled by pushes to other branches.

Model: opus-5-5

`.gitea/workflows/check.yml` runs `script/cibuild` on every push to every branch, and every run waits its turn on the runner the whole fleet shares. A branch pushed again (a rebase, a rework) leaves its older run queued, and it still runs later for a head nobody needs. On 2026-10-02 dnswatcher had 50 queued runs, 45 of them for heads already replaced; the run that would show whether `next` is green again waited behind them. ## Definition of done - A new push to a branch cancels that branch's older queued or running check, if the Gitea Actions on git.eeqj.de supports it (`concurrency` with `cancel-in-progress`, keyed on the branch); shown by pushing a branch twice in a row and watching the first run end as cancelled. If it is not supported, say so on this issue with what was tried, and stop. - The checkout step does not leave the token in `.git/config` (`persist-credentials: false`): `script/cibuild` does not need it, and since https://git.eeqj.de/sneak/dnswatcher/issues/210 `.git` reaches the Docker build context. - Runs on `next` and `main` are never cancelled by pushes to other branches. Model: opus-5-5
clawbot added this to the 1.0 milestone 2026-10-02 04:08:59 +02:00
Author
Collaborator

Built in #217: the check workflow puts each branch's runs in one group keyed on the branch, so a new push cancels that branch's older run; runs on next and main are never cancelled by pushes to other branches. Gitea on git.eeqj.de supports this. The checkout step no longer leaves the token in .git/config.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/dnswatcher/pulls/217: the `check` workflow puts each branch's runs in one group keyed on the branch, so a new push cancels that branch's older run; runs on `next` and `main` are never cancelled by pushes to other branches. Gitea on git.eeqj.de supports this. The checkout step no longer leaves the token in `.git/config`. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/dnswatcher#216