Skip to content

Commit 8aa82d1

Browse files
committed
Improve release asset packaging
1 parent 9dd175c commit 8aa82d1

File tree

1 file changed

+42
-18
lines changed

1 file changed

+42
-18
lines changed

.github/workflows/release.yml

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,32 @@ on:
55
tags:
66
- "v*.*.*"
77

8+
permissions:
9+
contents: write
10+
811
env:
912
CARGO_TERM_COLOR: always
13+
RELEASE_NAME: musical-joycons
1014

1115
jobs:
1216
build:
13-
name: Build ${{ matrix.os }}
17+
name: Build ${{ matrix.target }}
1418
runs-on: ${{ matrix.os }}
1519
strategy:
1620
matrix:
1721
include:
1822
- 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
2126
- 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
2430
- 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
2734

2835
steps:
2936
- uses: actions/checkout@v4
@@ -48,37 +55,54 @@ jobs:
4855
- name: Run tests
4956
run: cargo test --release
5057

51-
- name: Prepare binary
58+
- name: Prepare release archive
5259
shell: bash
5360
run: |
54-
mkdir -p release
61+
mkdir -p "release/${{ env.RELEASE_NAME }}"
62+
63+
# Copy executable
5564
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 }}"
5768
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 }}"
5973
fi
6074
61-
- name: Upload binary
75+
- name: Upload release archive
6276
uses: actions/upload-artifact@v3
6377
with:
6478
name: ${{ matrix.asset_name }}
65-
path: release/${{ matrix.asset_name }}
79+
path: release/${{ matrix.asset_name }}.${{ matrix.os == 'windows-latest' && 'zip' || 'tar.gz' }}
6680

6781
create_release:
6882
needs: build
6983
runs-on: ubuntu-latest
84+
permissions:
85+
contents: write
7086
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+
7193
- name: Download artifacts
7294
uses: actions/download-artifact@v3
73-
95+
with:
96+
path: release
97+
7498
- name: Create Release
75-
id: create_release
7699
uses: softprops/action-gh-release@v1
77100
with:
78101
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 }}"
82106
draft: false
83107
prerelease: false
84108
generate_release_notes: true

0 commit comments

Comments
 (0)