1313permissions :
1414 contents : write
1515
16+ # ── Pure-Python packages (coordinode, langchain-coordinode, llama-index) ──────
17+
1618jobs :
1719 build :
1820 name : Build ${{ matrix.package.name }}
@@ -57,10 +59,74 @@ jobs:
5759 path : ${{ matrix.package.path }}/dist/
5860 retention-days : 1
5961
62+ # ── coordinode-embedded: compiled Rust extension, one wheel per platform ──────
63+
64+ build-embedded :
65+ name : Build embedded / ${{ matrix.target }} (${{ matrix.os }})
66+ strategy :
67+ fail-fast : false
68+ matrix :
69+ include :
70+ # Linux x86_64 — most common server target
71+ - os : ubuntu-latest
72+ target : x86_64
73+ manylinux : manylinux_2_28
74+
75+ # Linux aarch64 — AWS Graviton, Raspberry Pi, etc.
76+ - os : ubuntu-latest
77+ target : aarch64
78+ manylinux : manylinux_2_28
79+
80+ # macOS Apple Silicon (M1/M2/M3)
81+ - os : macos-latest
82+ target : aarch64
83+
84+ # macOS Intel
85+ - os : macos-13
86+ target : x86_64
87+
88+ # Windows x86_64
89+ - os : windows-latest
90+ target : x86_64
91+
92+ runs-on : ${{ matrix.os }}
93+ steps :
94+ - uses : actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
95+ with :
96+ submodules : recursive
97+ fetch-depth : 0
98+
99+ # Pin the coordinode-rs submodule to the tag that matches this release.
100+ # The submodule SHA in git already points to the right commit; this step
101+ # ensures the tag annotation is present for version detection.
102+ - name : Verify coordinode-rs submodule tag
103+ run : git -C coordinode-rs describe --tags --exact-match HEAD || true
104+
105+ - name : Build wheels
106+ uses : PyO3/maturin-action@b03994fa3b4aa2d8c697185e0e66d1fa2041bfe2 # v1.47.0
107+ with :
108+ command : build
109+ args : >-
110+ --release
111+ --strip
112+ --manifest-path coordinode-embedded/Cargo.toml
113+ --out dist
114+ manylinux : ${{ matrix.manylinux || 'auto' }}
115+ target : ${{ matrix.target }}
116+
117+ - name : Upload wheels
118+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
119+ with :
120+ name : dist-coordinode-embedded-${{ matrix.target }}-${{ matrix.os }}
121+ path : dist/
122+ retention-days : 1
123+
124+ # ── Publish all packages to PyPI ─────────────────────────────────────────────
125+
60126 publish-pypi :
61127 name : Publish to PyPI
62128 runs-on : ubuntu-latest
63- needs : build
129+ needs : [ build, build-embedded]
64130 environment : pypi
65131 permissions :
66132 id-token : write
@@ -80,10 +146,30 @@ jobs:
80146 with :
81147 packages-dir : dist/
82148
149+ publish-pypi-embedded :
150+ name : Publish coordinode-embedded to PyPI
151+ runs-on : ubuntu-latest
152+ needs : build-embedded
153+ environment : pypi
154+ permissions :
155+ id-token : write
156+ steps :
157+ - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
158+ with :
159+ pattern : dist-coordinode-embedded-*
160+ merge-multiple : true
161+ path : dist/
162+
163+ - uses : pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
164+ with :
165+ packages-dir : dist/
166+
167+ # ── GitHub Release — attach all wheels ───────────────────────────────────────
168+
83169 github-release :
84170 name : Create GitHub Release
85171 runs-on : ubuntu-latest
86- needs : build
172+ needs : [ build, build-embedded]
87173 permissions :
88174 contents : write
89175 steps :
0 commit comments