Fix macOS build #797
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
- os: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
- os: macOS-latest | |
target: x86_64-apple-darwin | |
- os: macOS-latest | |
target: aarch64-apple-darwin | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
override: true | |
- name: Build and Upload Binary | |
uses: taiki-e/upload-rust-binary-action@v1 | |
with: | |
bin: psst-gui | |
target: ${{ matrix.target }} | |
archive: psst-${{ matrix.target }} | |
tar: unix | |
zip: windows | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
CARGO_PROFILE_RELEASE_LTO: true | |
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: 1 | |
- name: Create Universal Binary (macOS) | |
if: matrix.os == 'macOS-latest' && matrix.target == 'x86_64-apple-darwin' | |
run: | | |
lipo -create -output psst-gui-universal \ | |
../target/x86_64-apple-darwin/release/psst-gui \ | |
../target/aarch64-apple-darwin/release/psst-gui | |
- name: Create DMG (macOS) | |
if: matrix.os == 'macOS-latest' && matrix.target == 'x86_64-apple-darwin' | |
run: | | |
brew install create-dmg | |
mkdir -p Psst.app/Contents/MacOS | |
cp psst-gui-universal Psst.app/Contents/MacOS/psst-gui | |
cp assets/logo.icns Psst.app/Contents/Resources/ | |
create-dmg \ | |
--volname "Psst" \ | |
--volicon "assets/logo.icns" \ | |
--window-pos 200 120 \ | |
--window-size 600 400 \ | |
--icon-size 100 \ | |
--icon "Psst.app" 150 160 \ | |
--hide-extension "Psst.app" \ | |
--app-drop-link 450 160 \ | |
--no-internet-enable \ | |
"Psst.dmg" \ | |
"Psst.app" | |
- name: Upload DMG | |
if: matrix.os == 'macOS-latest' && matrix.target == 'x86_64-apple-darwin' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Psst.dmg | |
path: Psst.dmg | |
deb: | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- arch: amd64 | |
target: x86_64-unknown-linux-gnu | |
- arch: arm64 | |
target: aarch64-unknown-linux-gnu | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Download Linux Binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: psst-${{ matrix.target }} | |
path: ${{runner.workspace}}/binaries | |
- name: Extract Binary | |
run: | | |
tar -xvf ${{runner.workspace}}/binaries/psst-${{ matrix.target }}.tar.gz -C ${{runner.workspace}}/binaries | |
mkdir -p ${{runner.workspace}}/pkg/usr/bin/ | |
mv ${{runner.workspace}}/binaries/psst-gui ${{runner.workspace}}/pkg/usr/bin/ | |
- name: Add Metadata and Icons | |
run: | | |
mkdir -p ${{runner.workspace}}/pkg/usr/share/applications/ | |
cp .pkg/psst.desktop $_ | |
mkdir -p ${{runner.workspace}}/pkg/usr/share/icons/hicolor/ | |
cp -r psst-gui/assets/logo_*.png $_ | |
cp psst-gui/assets/logo.svg ${{runner.workspace}}/pkg/usr/share/icons/hicolor/scalable/apps/psst.svg | |
- name: Create Debian Package | |
run: | | |
mkdir -p ${{runner.workspace}}/pkg/DEBIAN | |
cat << EOF > ${{runner.workspace}}/pkg/DEBIAN/control | |
Package: psst | |
Version: $(git rev-list --count HEAD) | |
Architecture: ${{ matrix.arch }} | |
Maintainer: Jan Pochyla <jpochyla@gmail.com> | |
Description: Fast Spotify client with native GUI | |
Small and efficient graphical music player for Spotify network. | |
EOF | |
dpkg-deb -b ${{runner.workspace}}/pkg psst_$(git rev-list --count HEAD)_${{ matrix.arch }}.deb | |
- name: Upload Debian Package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: psst-deb-${{ matrix.arch }} | |
path: "*.deb" |