Files
spotifast/.github/workflows/packaging.yml
Carmine Paolino 16a9dde2ca Drop the old name from packages, release scripts and docs
Packages no longer install a fastpotify command or declare that they
replace, provide or conflict with the old packages. Releases no longer
carry the 0.9.1 bridge files, the release script only checks and sums
Spotifast downloads, and the Flatpak, Homebrew, macOS and Windows
recipes lose their old-identity branches and clean-ups. Packaging CI
tests the v0.11.2 release instead of installing the 0.8.0 package first.
The Rename page and the notes pointing to it are gone.

Updates begun by 0.10.2 or earlier on Windows relaunch fastpotify.exe,
which the installer no longer provides; such an install updates, but
needs starting by hand once.
2026-10-03 14:18:23 +02:00

139 lines
4.7 KiB
YAML

name: Packaging
on:
push:
branches: [main, master]
paths: [native-packages.yaml, packaging/**, contrib/omarchy/**, .github/workflows/packaging.yml, .github/workflows/release.yml]
pull_request:
paths: [native-packages.yaml, packaging/**, contrib/omarchy/**, .github/workflows/packaging.yml, .github/workflows/release.yml]
workflow_dispatch:
inputs:
version:
description: Published version (empty tests the pinned v0.11.2 fixture)
type: string
default: ''
publish:
description: Attach packages and run enabled downstream publishers
type: boolean
default: false
workflow_call:
inputs:
version:
required: true
type: string
publish:
type: boolean
default: true
secrets:
AUR_SSH_KEY:
required: false
AUR_KNOWN_HOSTS:
required: false
HOMEBREW_TAP_GITHUB_TOKEN:
required: false
HOMEBREW_TAP_SSH_KEY:
required: false
permissions:
contents: read
jobs:
packaging:
permissions:
contents: write
uses: crmne/native-packages/.github/workflows/package.yml@999768410cf53cdc68c8679c09cb14de1a6bca7b # v0.8.1
with:
targets: linux-amd64,linux-arm64
# Packaging changes exercise real release binaries on both architectures.
# Update this fixture deliberately; releases use their own tag instead.
version: ${{ inputs.version || 'v0.11.2' }}
publish: ${{ inputs.publish == true && inputs.version != '' }}
secrets: inherit
homebrew:
name: Homebrew install (macOS)
needs: packaging
runs-on: macos-latest
timeout-minutes: 15
steps:
- uses: actions/download-artifact@v4
with:
name: native-packages
path: dist/native-packages
- name: Install and remove the generated cask
env:
HOMEBREW_NO_AUTO_UPDATE: 1
run: |
brew tap-new --no-git spotifast/validation
tap="$(brew --repository)/Library/Taps/spotifast/homebrew-validation"
mkdir -p "$tap/Casks"
cp dist/native-packages/recipes/homebrew/spotifast.rb "$tap/Casks/spotifast.rb"
brew install --cask spotifast/validation/spotifast
app=/Applications/Spotifast.app
executable=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleExecutable' "$app/Contents/Info.plist")
"$app/Contents/MacOS/$executable" --version
codesign --verify --strict "$app"
brew uninstall --cask spotifast/validation/spotifast
test ! -e "$app"
# The AppImage carries no libraries of its own, so the runner supplies
# ALSA as a desktop would. Runners have no FUSE: it unpacks itself to run.
appimage:
name: AppImage (${{ matrix.os }})
needs: packaging
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
target: linux-amd64
arch: x86_64
- os: ubuntu-24.04-arm
target: linux-arm64
arch: aarch64
steps:
- uses: actions/download-artifact@v4
with:
name: native-packages
path: dist/native-packages
- name: Run the AppImage
env:
TARGET: ${{ matrix.target }}
ARCH: ${{ matrix.arch }}
run: |
sudo apt-get update
# The AppImage bundles no libraries, so it needs what the DEB depends on.
sudo apt-get install -y --no-install-recommends \
libdbus-1-3 libgl1 libegl1 libxkbcommon0 libxkbcommon-x11-0 \
libwayland-client0 libwayland-cursor0 libwayland-egl1 libx11-6 \
libx11-xcb1 libxcursor1 libxi6 libxrandr2 libasound2t64 libpulse0
set -- dist/native-packages/packages/"$TARGET"/appimage/spotifast-*-"$ARCH".AppImage
test "$#" -eq 1
chmod +x "$1"
"$1" --appimage-extract-and-run --version | grep -Ex 'spotifast [0-9]+\.[0-9]+\.[0-9]+.*'
installation:
name: Install (${{ matrix.os }}, ${{ matrix.image }})
needs: packaging
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-24.04-arm]
image: ['ubuntu:24.04', 'debian:13-slim', 'fedora:41', 'fedora:latest']
steps:
- uses: actions/checkout@v7
- uses: actions/download-artifact@v4
with:
name: native-packages
path: dist/native-packages
- name: Release filename regression checks
run: python3 packaging/test-release-names.py
- name: Install and check runtime libraries in a clean container
env:
IMAGE: ${{ matrix.image }}
run: bash packaging/test-install.sh "$IMAGE" dist/native-packages