@@ -10,41 +10,53 @@ jobs:
1010 runs-on : ${{ matrix.os }}
1111 strategy :
1212 matrix :
13- os : [macos-latest, ubuntu-latest, macos-13] # Specify the runners you want to use
13+ include :
14+ - os : ubuntu-latest
15+ target : x86_64-unknown-linux-gnu
16+ - os : ubuntu-latest
17+ target : aarch64-unknown-linux-gnu
18+ - os : macos-latest
19+ target : aarch64-apple-darwin
20+ - os : macos-13
21+ target : x86_64-apple-darwin
1422
1523 steps :
1624 - name : Checkout repository
1725 uses : actions/checkout@v4
1826
19- # Dynamically create a tag from the pushed version
2027 - name : Get the tag name
2128 id : get_tag
2229 run : |
2330 echo "TAG=${GITHUB_REF##*/}" >> $GITHUB_ENV
2431
2532 - name : Set up Rust
2633 uses : actions-rust-lang/setup-rust-toolchain@v1
34+ with :
35+ target : ${{ matrix.target }}
36+
37+ - name : Install cross-compilation tools
38+ if : matrix.target == 'aarch64-unknown-linux-gnu'
39+ run : |
40+ sudo apt-get update
41+ sudo apt-get install -y gcc-aarch64-linux-gnu
2742
2843 - name : Build release binary
29- run : cargo build --release
44+ env :
45+ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER : aarch64-linux-gnu-gcc
46+ run : |
47+ cargo build --release --target ${{ matrix.target }}
3048
31- # Perhaps we can ignore tests, as they are run by the CI workflow
32- # - name: Run tests
33- # run: cargo test --release
34- #
35-
3649 - name : Get OS and architecture
3750 run : |
38- echo "os =$(uname -s | tr '[:upper:]' '[:lower:] ')" >> $GITHUB_ENV
39- echo "arch =$(uname -m )" >> $GITHUB_ENV
51+ echo "OS =$(echo ${{ matrix.target }} | grep -q 'linux' && echo 'linux' || echo 'darwin ')" >> $GITHUB_ENV
52+ echo "ARCH =$(echo ${{ matrix.target }} | grep -q 'aarch64' && echo 'arm64' || echo 'x86_64' )" >> $GITHUB_ENV
4053
4154 - name : Create release archive
4255 run : |
43- mkdir -p release
44- ARCH="${{ env.arch }}"
45- OS="${{ env.os }}"
46- cp target/release/spaced release/spaced-${{ env.TAG }}-${OS}-${ARCH}
47- cp target/release/space-cli release/space-cli-${{ env.TAG }}-${OS}-${ARCH}
56+ mkdir -p spaces-${{ env.TAG }}-${{ env.OS }}-${{ env.ARCH }}
57+ cp target/${{ matrix.target }}/release/spaced spaces-${{ env.TAG }}-${{ env.OS }}-${{ env.ARCH }}/spaced
58+ cp target/${{ matrix.target }}/release/space-cli spaces-${{ env.TAG }}-${{ env.OS }}-${{ env.ARCH }}/space-cli
59+ tar -czf spaces-${{ env.TAG }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz spaces-${{ env.TAG }}-${{ env.OS }}-${{ env.ARCH }}
4860
4961 - name : Create GitHub Release
5062 id : create_release
5769 draft : false
5870 prerelease : false
5971 files : |
60- release/spaced-${{ env.TAG }}-${{ env.os }}-${{ env.arch }}
61- release/space-cli-${{ env.TAG }}-${{ env.os }}-${{ env.arch }}
72+ spaces-${{ env.TAG }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz
6273 make_latest : true
6374 env :
6475 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments