Scope shared CI cache cleanup to each bread job #8

Closed
opened 2026-10-01 10:21:33 +08:00 by Breadway · 3 comments
Owner

Child of ECO-28. The bread consumer helper and three release index workflows still delete /tmp/bread-ecosystem-ci-* on current main. Concurrent jobs can remove one another's live clone. Keep immutable revision pinning in ci/build.sh, publish a completed clone atomically without deleting active paths, and use invocation-specific temporary directories with exact EXIT cleanup in the release workflows. Acceptance: parallel success and failure cases preserve a sibling job's active directory.

Child of ECO-28. The bread consumer helper and three release index workflows still delete /tmp/bread-ecosystem-ci-* on current main. Concurrent jobs can remove one another's live clone. Keep immutable revision pinning in ci/build.sh, publish a completed clone atomically without deleting active paths, and use invocation-specific temporary directories with exact EXIT cleanup in the release workflows. Acceptance: parallel success and failure cases preserve a sibling job's active directory.
Author
Owner

PR: #9

The pinned helper now publishes a fully checked out revision under a lock in a cache outside the legacy wildcard prefix. All three release index jobs clean up only their own mktemp checkout on EXIT. Isolated concurrent clone and success/failure workflow checks passed. Waiting for Forgejo CI before REVIEW.

PR: https://git.breadway.dev/Breadway/bread/pulls/9 The pinned helper now publishes a fully checked out revision under a lock in a cache outside the legacy wildcard prefix. All three release index jobs clean up only their own mktemp checkout on EXIT. Isolated concurrent clone and success/failure workflow checks passed. Waiting for Forgejo CI before REVIEW.
Author
Owner

PR #9 is linked on this card and Forgejo CI now reports success (check / check (push)). After reboot, I restored the preserved isolated branch and reran the parallel pinned-clone, failed-clone cleanup, and all three release-index workflow success/failure checks. The sibling active directory remained intact and git diff --check passed. Moving BREAD-8 to REVIEW for independent review.

PR #9 is linked on this card and Forgejo CI now reports success (`check / check (push)`). After reboot, I restored the preserved isolated branch and reran the parallel pinned-clone, failed-clone cleanup, and all three release-index workflow success/failure checks. The sibling active directory remained intact and `git diff --check` passed. Moving BREAD-8 to REVIEW for independent review.
Author
Owner

Reviewed PR #9 against the stated acceptance criteria:

  1. The helper retains immutable revision pinning and verifies the cached checkout's HEAD matches the requested revision: ci/build.sh:12-15, 21-34.
  2. Cache creation is serialized per revision, built in a private sibling directory, and published by same-filesystem rename only after checkout completes. The cache is outside the old wildcard prefix: ci/build.sh:18-29.
  3. The dev, beta, and stable index workflows each use a unique mktemp directory and an EXIT trap that removes only that invocation's directory: .forgejo/workflows/dev-release.yml:89-92, rc-release.yml:60-63, and release.yml:53-56. I found no remaining broad wildcard deletion in the changed branch.

The PR reports parallel success and failure checks preserving sibling directories. No automated regression fixture is committed, so those concurrency checks are recorded only in the PR description. The change itself is scoped and meets the requested behavior by inspection.

Current CI for head d0033caccf is successful, and Forgejo reports the PR mergeable. This repository is on the release train, so the merge is left to the user.

Reviewed PR #9 against the stated acceptance criteria: 1. The helper retains immutable revision pinning and verifies the cached checkout's HEAD matches the requested revision: `ci/build.sh:12-15, 21-34`. 2. Cache creation is serialized per revision, built in a private sibling directory, and published by same-filesystem rename only after checkout completes. The cache is outside the old wildcard prefix: `ci/build.sh:18-29`. 3. The dev, beta, and stable index workflows each use a unique mktemp directory and an EXIT trap that removes only that invocation's directory: `.forgejo/workflows/dev-release.yml:89-92`, `rc-release.yml:60-63`, and `release.yml:53-56`. I found no remaining broad wildcard deletion in the changed branch. The PR reports parallel success and failure checks preserving sibling directories. No automated regression fixture is committed, so those concurrency checks are recorded only in the PR description. The change itself is scoped and meets the requested behavior by inspection. Current CI for head d0033caccfea1c4fbf837c2b4e4d29cc7779eded is successful, and Forgejo reports the PR mergeable. This repository is on the release train, so the merge is left to the user.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Breadway/bread#8
No description provided.