|
3 | 3 | push: |
4 | 4 | tags: ["v*"] |
5 | 5 |
|
6 | | -permissions: |
7 | | - contents: read |
8 | | - |
9 | 6 | jobs: |
10 | | - artifacts: |
11 | | - name: Build ${{ matrix.target }} |
12 | | - runs-on: ${{ matrix.os }} |
13 | | - strategy: |
14 | | - fail-fast: false |
15 | | - matrix: |
16 | | - include: |
17 | | - - os: ubuntu-22.04 |
18 | | - target: x86_64-unknown-linux-gnu |
19 | | - shared-library: libtinywasm.so |
20 | | - - os: ubuntu-22.04-arm |
21 | | - target: aarch64-unknown-linux-gnu |
22 | | - shared-library: libtinywasm.so |
23 | | - - os: macos-15-intel |
24 | | - target: x86_64-apple-darwin |
25 | | - shared-library: libtinywasm.dylib |
26 | | - - os: macos-15 |
27 | | - target: aarch64-apple-darwin |
28 | | - shared-library: libtinywasm.dylib |
29 | | - steps: |
30 | | - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 |
31 | | - with: |
32 | | - persist-credentials: false |
33 | | - - uses: actions-rust-lang/setup-rust-toolchain@ecabd13d1c56bd1345c230e542e9144811ad706f # v2.0.0 |
34 | | - with: |
35 | | - toolchain: stable |
36 | | - target: ${{ matrix.target }} |
37 | | - rustflags: "" |
38 | | - - name: Build CLI and C API |
39 | | - env: |
40 | | - TARGET: ${{ matrix.target }} |
41 | | - run: | |
42 | | - cargo build --locked --release --target "$TARGET" -p tinywasm-cli |
43 | | - if [[ "$TARGET" == *-apple-darwin ]]; then |
44 | | - cargo rustc --locked --release --target "$TARGET" -p tinywasm-c-api -- \ |
45 | | - -C link-arg=-Wl,-install_name,@rpath/libtinywasm.dylib |
46 | | - else |
47 | | - cargo build --locked --release --target "$TARGET" -p tinywasm-c-api |
48 | | - fi |
49 | | - - name: Package and smoke-test |
50 | | - env: |
51 | | - TARGET: ${{ matrix.target }} |
52 | | - SHARED_LIBRARY: ${{ matrix.shared-library }} |
53 | | - run: | |
54 | | - name="tinywasm-${GITHUB_REF_NAME}-${TARGET}" |
55 | | - package="$RUNNER_TEMP/$name" |
56 | | - mkdir -p "$package/bin" "$package/lib" "$package/include" "$package/licenses" dist |
57 | | - cp "target/$TARGET/release/tinywasm" "$package/bin/" |
58 | | - cp "target/$TARGET/release/$SHARED_LIBRARY" "target/$TARGET/release/libtinywasm.a" "$package/lib/" |
59 | | - cp crates/c-api/include/*.h "$package/include/" |
60 | | - cp LICENSE-MIT LICENSE-APACHE crates/c-api/include/LICENSE-wasm-c-api "$package/licenses/" |
61 | | - cp crates/c-api/README.md "$package/README.md" |
62 | | - "$package/bin/tinywasm" --version |
63 | | - cc -std=c11 -I"$package/include" crates/c-api/examples/add.c \ |
64 | | - -L"$package/lib" -Wl,-rpath,"$package/lib" -ltinywasm -o "$RUNNER_TEMP/c-api-example" |
65 | | - "$RUNNER_TEMP/c-api-example" |
66 | | - tar -czf "dist/$name.tar.gz" -C "$RUNNER_TEMP" "$name" |
67 | | - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 |
68 | | - with: |
69 | | - name: tinywasm-${{ matrix.target }} |
70 | | - path: dist/*.tar.gz |
71 | | - if-no-files-found: error |
72 | | - |
73 | 7 | publish: |
74 | 8 | runs-on: ubuntu-26.04 |
75 | 9 | environment: release |
|
85 | 19 | - run: cargo publish --workspace |
86 | 20 | env: |
87 | 21 | CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} |
88 | | - |
89 | | - release: |
90 | | - name: Attach release archives |
91 | | - needs: [publish, artifacts] |
92 | | - runs-on: ubuntu-latest |
93 | | - permissions: |
94 | | - contents: write |
95 | | - steps: |
96 | | - - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 |
97 | | - with: |
98 | | - pattern: tinywasm-* |
99 | | - merge-multiple: true |
100 | | - path: dist |
101 | | - - name: Create checksums and upload |
102 | | - working-directory: dist |
103 | | - env: |
104 | | - GH_TOKEN: ${{ github.token }} |
105 | | - GH_REPO: ${{ github.repository }} |
106 | | - TAG: ${{ github.ref_name }} |
107 | | - run: | |
108 | | - sha256sum -- *.tar.gz > SHA256SUMS |
109 | | - if ! gh release view "$TAG" > /dev/null 2>&1; then |
110 | | - gh release create "$TAG" --verify-tag --generate-notes |
111 | | - fi |
112 | | - gh release upload "$TAG" ./*.tar.gz SHA256SUMS --clobber |
0 commit comments