@@ -10,41 +10,53 @@ jobs:
10
10
runs-on : ${{ matrix.os }}
11
11
strategy :
12
12
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
14
22
15
23
steps :
16
24
- name : Checkout repository
17
25
uses : actions/checkout@v4
18
26
19
- # Dynamically create a tag from the pushed version
20
27
- name : Get the tag name
21
28
id : get_tag
22
29
run : |
23
30
echo "TAG=${GITHUB_REF##*/}" >> $GITHUB_ENV
24
31
25
32
- name : Set up Rust
26
33
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
27
42
28
43
- 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 }}
30
48
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
-
36
49
- name : Get OS and architecture
37
50
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
40
53
41
54
- name : Create release archive
42
55
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 }}
48
60
49
61
- name : Create GitHub Release
50
62
id : create_release
57
69
draft : false
58
70
prerelease : false
59
71
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
62
73
make_latest : true
63
74
env :
64
75
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments