5
5
tags :
6
6
- " v*.*.*"
7
7
8
+ permissions :
9
+ contents : write
10
+
8
11
env :
9
12
CARGO_TERM_COLOR : always
13
+ RELEASE_NAME : musical-joycons
10
14
11
15
jobs :
12
16
build :
13
- name : Build ${{ matrix.os }}
17
+ name : Build ${{ matrix.target }}
14
18
runs-on : ${{ matrix.os }}
15
19
strategy :
16
20
matrix :
17
21
include :
18
22
- os : ubuntu-latest
19
- artifact_name : musical-joycons
20
- asset_name : musical-joycons-linux-amd64
23
+ target : linux
24
+ artifact_name : musicalJoycons
25
+ asset_name : MusicalJoycons-linux-x86_64
21
26
- os : windows-latest
22
- artifact_name : musical-joycons.exe
23
- asset_name : musical-joycons-windows-amd64.exe
27
+ target : windows
28
+ artifact_name : musicalJoycons.exe
29
+ asset_name : MusicalJoycons-windows-x86_64
24
30
- os : macos-latest
25
- artifact_name : musical-joycons
26
- asset_name : musical-joycons-macos-amd64
31
+ target : macos
32
+ artifact_name : musicalJoycons
33
+ asset_name : MusicalJoycons-macos-x86_64
27
34
28
35
steps :
29
36
- uses : actions/checkout@v4
@@ -48,37 +55,54 @@ jobs:
48
55
- name : Run tests
49
56
run : cargo test --release
50
57
51
- - name : Prepare binary
58
+ - name : Prepare release archive
52
59
shell : bash
53
60
run : |
54
- mkdir -p release
61
+ mkdir -p "release/${{ env.RELEASE_NAME }}"
62
+
63
+ # Copy executable
55
64
if [ "${{ matrix.os }}" = "windows-latest" ]; then
56
- cp target/release/musicalJoycons.exe release/${{ matrix.asset_name }}
65
+ cp "target/release/${{ matrix.artifact_name }}" "release/${{ env.RELEASE_NAME }}/"
66
+ cd release
67
+ 7z a "${{ matrix.asset_name }}.zip" "${{ env.RELEASE_NAME }}"
57
68
else
58
- cp target/release/musicalJoycons release/${{ matrix.asset_name }}
69
+ cp "target/release/${{ matrix.artifact_name }}" "release/${{ env.RELEASE_NAME }}/"
70
+ chmod +x "release/${{ env.RELEASE_NAME }}/${{ matrix.artifact_name }}"
71
+ cd release
72
+ tar -czf "${{ matrix.asset_name }}.tar.gz" "${{ env.RELEASE_NAME }}"
59
73
fi
60
74
61
- - name : Upload binary
75
+ - name : Upload release archive
62
76
uses : actions/upload-artifact@v3
63
77
with :
64
78
name : ${{ matrix.asset_name }}
65
- path : release/${{ matrix.asset_name }}
79
+ path : release/${{ matrix.asset_name }}.${{ matrix.os == 'windows-latest' && 'zip' || 'tar.gz' }}
66
80
67
81
create_release :
68
82
needs : build
69
83
runs-on : ubuntu-latest
84
+ permissions :
85
+ contents : write
70
86
steps :
87
+ - uses : actions/checkout@v4
88
+
89
+ - name : Get version from tag
90
+ id : get_version
91
+ run : echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
92
+
71
93
- name : Download artifacts
72
94
uses : actions/download-artifact@v3
73
-
95
+ with :
96
+ path : release
97
+
74
98
- name : Create Release
75
- id : create_release
76
99
uses : softprops/action-gh-release@v1
77
100
with :
78
101
files : |
79
- musical-joycons-linux-amd64
80
- musical-joycons-windows-amd64.exe
81
- musical-joycons-macos-amd64
102
+ release/MusicalJoycons-linux-x86_64/MusicalJoycons-linux-x86_64.tar.gz
103
+ release/MusicalJoycons-windows-x86_64/MusicalJoycons-windows-x86_64.zip
104
+ release/MusicalJoycons-macos-x86_64/MusicalJoycons-macos-x86_64.tar.gz
105
+ name : " Musical Joycons ${{ env.VERSION }}"
82
106
draft : false
83
107
prerelease : false
84
108
generate_release_notes : true
0 commit comments