@ondeinference / ed / commits / dddac1d

Queue Swift releases and drop the stale onde checkout

The release workflow had no concurrency group at all, so a re-pushed tag or a dispatch fired during a tag run starts a second 2h20m macOS build next to the first, with both racing to push a commit and a tag to ed-swift. Runs now queue per ref. They deliberately do not cancel: killing a run between "create the GitHub release" and "push to ed-swift" leaves a release with no assets attached to it. 98cdf9b moved Ed off the onde path dependency and onto the published crate, which left the sibling checkout in all three jobs cloning the engine for nothing, and left ONDE_REF claiming to pick the onde revision CI builds against when it no longer picks anything. To build Ed against an unreleased onde, add a [patch.crates-io] entry pointing at the sibling path instead. Co-Authored-By: siGit Code <noreply@sigit.si>

Seto Elkahfi committed Sep 11, 2026 at 04:35 UTC dddac1d0f8b4fb1894d6874f65ec6f7ba200fd34
2 files changed +8 -26
.github/workflows/ci.yml
-10
@@ -15,11 +15,6 @@ concurrency:
15 group: ci-${{ github.event.pull_request.number || github.sha }}
16 cancel-in-progress: true
17
18 -env:
19 - # See the note in release-sdk-swift.yml: Ed and onde are checked out side by
20 - # side because the dependency is a path dependency.
21 - ONDE_REF: main
22 -
18 jobs:
19 check:
20 runs-on: macos-26
@@ -30,11 +25,6 @@ jobs:
25 - uses: actions/checkout@v6
26 with:
27 path: ed
33 - - uses: actions/checkout@v6
34 - with:
35 - repository: ondeinference/onde
36 - ref: ${{ env.ONDE_REF }}
37 - path: onde
28 - name: Read Rust toolchain
29 run: |
30 rust_toolchain="$(sed -n 's/^channel = "\(.*\)"/\1/p' rust-toolchain.toml | head -n 1)"
.github/workflows/release-sdk-swift.yml
+8 -16
@@ -18,12 +18,14 @@ on:
18 permissions:
19 contents: write
20
21 -env:
22 - # Ed depends on onde by path, so a checkout and its sibling engine move
23 - # together and CI has to reproduce that layout. Both repos are public, so no
24 - # token is needed. Point this at `development` while Ed relies on an onde API
25 - # that has not been released yet, and back at `main` once it has.
26 - ONDE_REF: main
21 +# One release at a time per tag. Not cancel-in-progress: the later steps create
22 +# a GitHub release and then push a commit and a tag to ed-swift, and killing a
23 +# run part-way through that leaves a release with no assets on it, or ed-swift
24 +# updated against a release that no longer matches. A duplicate run waits for
25 +# the 2h20m build ahead of it instead.
26 +concurrency:
27 + group: release-sdk-swift-${{ github.ref }}
28 + cancel-in-progress: false
29
30 jobs:
31 preflight:
@@ -38,11 +40,6 @@ jobs:
40 - uses: actions/checkout@v6
41 with:
42 path: ed
41 - - uses: actions/checkout@v6
42 - with:
43 - repository: ondeinference/onde
44 - ref: ${{ env.ONDE_REF }}
45 - path: onde
43 - name: Read Rust toolchain
44 run: |
45 rust_toolchain="$(sed -n 's/^channel = "\(.*\)"/\1/p' rust-toolchain.toml | head -n 1)"
@@ -77,11 +74,6 @@ jobs:
74 - uses: actions/checkout@v6
75 with:
76 path: ed
80 - - uses: actions/checkout@v6
81 - with:
82 - repository: ondeinference/onde
83 - ref: ${{ env.ONDE_REF }}
84 - path: onde
77 - name: Read Rust toolchain
78 run: |
79 rust_toolchain="$(sed -n 's/^channel = "\(.*\)"/\1/p' rust-toolchain.toml | head -n 1)"