@@ -47,10 +47,19 @@ jobs:
4747
4848 strategy :
4949 matrix :
50- os :
51- - ubuntu-latest
52- - windows-latest
53- - macos-latest
50+ include :
51+ - target : x86_64-unknown-linux-gnu
52+ os : ubuntu-latest
53+ name : xsnippet-api-x86_64-linux.gz
54+ - target : aarch64-unknown-linux-gnu
55+ os : ubuntu-latest
56+ name : xsnippet-api-aarch64-linux.gz
57+ - target : x86_64-pc-windows-msvc
58+ os : windows-latest
59+ name : xsnippet-api-x86_64-windows.exe.7z
60+ - target : aarch64-apple-darwin
61+ os : macos-latest
62+ name : xsnippet-api-aarch64-macos.gz
5463
5564 runs-on : ${{ matrix.os }}
5665
@@ -66,31 +75,34 @@ jobs:
6675 - name : Setup PostgreSQL
6776 uses : ikalnytskyi/action-setup-postgres@v6
6877
69- - uses : actions-rs/cargo@v1
70- with :
71- command : build
72- args : --release
73-
7478 - id : build
7579 run : |
7680 rustc --print cfg | grep = > rustc.vars
7781 source rustc.vars
7882
79- pushd target/release
80- if [ "$RUNNER_OS" == "Windows" ]; then
81- export ASSET_NAME="xsnippet-api-${target_arch}-${target_os}.exe.7z"
83+ export HOST="${target_arch}-${target_os}-${target_env}"
84+ if [ "$HOST" = "$TARGET" ]; then
85+ cargo build --release --target ${TARGET}
86+ else
87+ cargo install cross
88+ cross build --release --target ${TARGET}
89+ fi
90+
91+ pushd target/${TARGET}/release
92+ if [ "$TARGET" =~ "windows" ]; then
8293 7z a $ASSET_NAME xsnippet-api.exe
8394 else
84- export ASSET_NAME="xsnippet-api-${target_arch}-${target_os}.gz"
8595 tar cvzf $ASSET_NAME xsnippet-api
8696 fi
8797 gh release upload $RELEASE_TAG $ASSET_NAME
8898 popd
8999
90- echo "asset_path=target/release /$ASSET_NAME" >> $GITHUB_OUTPUT
100+ echo "asset_path=$PWD /$ASSET_NAME" >> $GITHUB_OUTPUT
91101 env :
102+ ASSET_NAME : ${{ matrix.name }}
92103 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
93104 GH_REPO : ${{ env.GITHUB_REPOSITORY }}
105+ TARGET : ${{ matrix.target }}
94106 RELEASE_TAG : ${{ needs.create_release.outputs.release_tag }}
95107
96108 - uses : actions/attest-build-provenance@v1
0 commit comments