77 branches :
88 - main
99 tags :
10- - ' runtime-wasmtime-v[0-9].[0-9]+.[0-9]+'
11- - ' runtime-wasmtime-v[0-9].[0-9]+.[0-9]+-*'
12- - ' transport-nats-v[0-9].[0-9]+.[0-9]+'
13- - ' transport-nats-v[0-9].[0-9]+.[0-9]+-*'
14- - ' transport-v[0-9].[0-9]+.[0-9]+'
15- - ' transport-v[0-9].[0-9]+.[0-9]+-*'
10+ - ' crates/cli/v[0-9].[0-9]+.[0-9]+'
11+ - ' crates/cli/v[0-9].[0-9]+.[0-9]+-*'
12+ - ' crates/introspect/v[0-9].[0-9]+.[0-9]+'
13+ - ' crates/introspect/v[0-9].[0-9]+.[0-9]+-*'
14+ - ' crates/runtime-wasmtime/v[0-9].[0-9]+.[0-9]+'
15+ - ' crates/runtime-wasmtime/v[0-9].[0-9]+.[0-9]+-*'
16+ - ' crates/transport-nats/v[0-9].[0-9]+.[0-9]+'
17+ - ' crates/transport-nats/v[0-9].[0-9]+.[0-9]+-*'
18+ - ' crates/transport-quic/v[0-9].[0-9]+.[0-9]+'
19+ - ' crates/transport-quic/v[0-9].[0-9]+.[0-9]+-*'
20+ - ' crates/transport/v[0-9].[0-9]+.[0-9]+'
21+ - ' crates/transport/v[0-9].[0-9]+.[0-9]+-*'
22+ - ' crates/wasmtime-nats-cli/v[0-9].[0-9]+.[0-9]+'
23+ - ' crates/wasmtime-nats-cli/v[0-9].[0-9]+.[0-9]+-*'
24+ - ' crates/wit-bindgen/v[0-9].[0-9]+.[0-9]+'
25+ - ' crates/wit-bindgen/v[0-9].[0-9]+.[0-9]+-*'
26+ - ' crates/wit-bindgen-go/v[0-9].[0-9]+.[0-9]+'
27+ - ' crates/wit-bindgen-go/v[0-9].[0-9]+.[0-9]+-*'
28+ - ' crates/wit-bindgen-rust/v[0-9].[0-9]+.[0-9]+'
29+ - ' crates/wit-bindgen-rust/v[0-9].[0-9]+.[0-9]+-*'
30+ - ' crates/wit-bindgen-rust-macro/v[0-9].[0-9]+.[0-9]+'
31+ - ' crates/wit-bindgen-rust-macro/v[0-9].[0-9]+.[0-9]+-*'
1632 - ' v[0-9].[0-9]+.[0-9]+'
1733 - ' v[0-9].[0-9]+.[0-9]+-*'
1834 workflow_dispatch :
@@ -150,6 +166,74 @@ jobs:
150166 if : ${{ matrix.check }} == "nextest"
151167 - run : nix build -L .#checks.x86_64-linux.${{ matrix.check }}
152168
169+ crates :
170+ strategy :
171+ matrix :
172+ include :
173+ - crate : cli
174+
175+ - crate : introspect
176+
177+ - crate : runtime-wasmtime
178+ workspace-dependencies : true
179+
180+ - crate : transport
181+
182+ - crate : transport-nats
183+ workspace-dependencies : true
184+
185+ - crate : transport-quic
186+ workspace-dependencies : true
187+
188+ - crate : wasmtime-nats-cli
189+ workspace-dependencies : true
190+
191+ - crate : wit-bindgen
192+ workspace-dependencies : true
193+
194+ - crate : wit-bindgen-go
195+ workspace-dependencies : true
196+
197+ - crate : wit-bindgen-rust
198+ workspace-dependencies : true
199+
200+ - crate : wit-bindgen-rust-macro
201+ workspace-dependencies : true
202+
203+ name : publish ${{ matrix.crate }} to crates.io
204+ needs : cargo
205+ runs-on : ubuntu-latest
206+ steps :
207+ - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
208+
209+ - name : Extract tag context
210+ id : ctx
211+ run : |
212+ version=${GITHUB_REF_NAME#crates/${{ matrix.crate }}/v}
213+ echo "version is ${version}"
214+ if [[ $version == *"-"* ]]; then
215+ echo "version ${version} is a pre-release"
216+ echo "prerelease=true" >> "$GITHUB_OUTPUT"
217+ fi
218+
219+ - name : dry-run publish ${{ matrix.crate }} to crates.io
220+ if : ${{ !startsWith(github.ref, 'refs/tags/') }}
221+ continue-on-error : ${{ matrix.workspace-dependencies }} # publish may fail due to workspace crates not being published yet
222+ run : cargo publish --dry-run
223+ working-directory : ./crates/${{ matrix.crate }}
224+
225+ - name : publish ${{ matrix.crate }} to crates.io
226+ if : startsWith(github.ref, format('refs/tags/crates/{0}/v', matrix.crate)) && !steps.ctx.outputs.prerelease
227+ continue-on-error : ${{ github.repository_owner != 'wrpc' }}
228+ run : |
229+ pkgver=$(cargo pkgid | cut -d '@' -f 2)
230+ if ![ "$pkgver" = "${{ steps.ctx.outputs.version }}" ]; then
231+ echo "version mismatch, $pkgver (package) != ${{ steps.ctx.outputs.version }} (tag)"
232+ exit 1
233+ fi
234+ cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
235+ working-directory : ./crates/${{ matrix.crate }}
236+
153237 build-doc :
154238 runs-on : ubuntu-latest
155239 steps :
@@ -265,6 +349,7 @@ jobs:
265349 - build-doc
266350 - build-lipo
267351 - cargo
352+ - crates
268353 - oci
269354 - test-linux
270355 - test-windows
@@ -273,9 +358,31 @@ jobs:
273358 contents : write
274359 steps :
275360 - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
361+
362+ - name : Extract tag context
363+ id : ctx
364+ run : |
365+ version=${GITHUB_REF_NAME#v}
366+ echo "version is ${version}"
367+ if [[ $version == *"-"* ]]; then
368+ echo "version ${version} is a pre-release"
369+ echo "prerelease=true" >> "$GITHUB_OUTPUT"
370+ fi
371+
372+ - name : publish wRPC to crates.io
373+ if : startsWith(github.ref, 'refs/tags/v')
374+ run : |
375+ pkgver=$(cargo pkgid | cut -d '@' -f 2)
376+ if ![ "$pkgver" = "${{ steps.ctx.outputs.version }}" ]; then
377+ echo "version mismatch, $pkgver (package) != ${{ steps.ctx.outputs.version }} (tag)"
378+ exit 1
379+ fi
380+ cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
381+
276382 - uses : actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
277383 with :
278384 path : artifacts
385+
279386 - run : |
280387 for dir in ./artifacts/wrpc-*; do
281388 target=${dir#./artifacts/wrpc-}
@@ -306,45 +413,3 @@ jobs:
306413 ./wit-bindgen-wrpc/*
307414 ./wrpc-wasmtime-nats/*
308415
309- crates :
310- strategy :
311- matrix :
312- include :
313- - crate : introspect
314-
315- - crate : runtime-wasmtime
316- workspace-dependencies : true
317-
318- - crate : transport
319- workspace-dependencies : true
320-
321- - crate : transport-nats
322- workspace-dependencies : true
323-
324- name : publish ${{ matrix.crate }} to crates.io
325- needs : cargo
326- runs-on : ubuntu-latest
327- steps :
328- - uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
329-
330- - name : Extract tag context
331- id : ctx
332- run : |
333- version=${GITHUB_REF_NAME#${{ matrix.crate }}-v}
334- echo "version is ${version}"
335- if [[ $version == *"-"* ]]; then
336- echo "version ${version} is a pre-release"
337- echo "prerelease=true" >> "$GITHUB_OUTPUT"
338- fi
339-
340- - name : dry-run publish ${{ matrix.crate }} to crates.io
341- if : ${{ !startsWith(github.ref, 'refs/tags/') }}
342- continue-on-error : ${{ matrix.workspace-dependencies }} # publish may fail due to workspace crates not being published yet
343- run : cargo publish --dry-run
344- working-directory : ./crates/${{ matrix.crate }}
345-
346- - name : publish ${{ matrix.crate }} to crates.io
347- if : startsWith(github.ref, format('refs/tags/{0}-v', matrix.crate)) && !steps.ctx.outputs.prerelease
348- continue-on-error : ${{ github.repository_owner != 'wrpc' }}
349- run : cargo publish --token ${{ secrets.CRATES_PUBLISH_TOKEN }}
350- working-directory : ./crates/${{ matrix.crate }}
0 commit comments