Files
supersonic/.github/workflows/release.yml
T
2026-06-29 17:40:18 -07:00

241 lines
7.7 KiB
YAML

name: Release
on:
push:
tags:
- 'v*'
jobs:
build-windows:
name: Build Windows
runs-on: windows-latest
timeout-minutes: 30
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
path-type: inherit
update: true
install: >-
make
wget
zip
p7zip
- uses: actions/checkout@v7
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Install Dependencies
run: >
pacman -Syu &&
pacman --noconfirm -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-mpv
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Package
run: make package_windows
- name: Download mpv dll
run: >
wget https://github.com/shinchiro/mpv-winbuild-cmake/releases/download/20260301/mpv-dev-x86_64-20260301-git-05fac7f.7z &&
7z x mpv-dev-x86_64-20260301-git-05fac7f.7z
- name: Download smtc dll
run: >
wget https://github.com/supersonic-app/smtc-dll/releases/download/v0.1.2/SMTC.dll
- name: Generate zip bundle
run: >
zip Supersonic_windows_x64.zip Supersonic.exe libmpv-2.dll SMTC.dll
- name: Generate installer
uses: Minionguyjpro/Inno-Setup-Action@v1.2.8
with:
path: win_inno_installscript.iss
- name: Rename installer
run: cp Output/supersonic-installer.exe Supersonic_windows_x64_installer.exe
- name: Upload zip
uses: actions/upload-artifact@v7
with:
name: Supersonic_windows_x64.zip
path: Supersonic_windows_x64.zip
- name: Upload installer
uses: actions/upload-artifact@v7
with:
name: Supersonic_windows_x64_installer.exe
path: Supersonic_windows_x64_installer.exe
build-macos-arm64:
name: Build macOS arm64
runs-on: macos-14
timeout-minutes: 30
steps:
- uses: actions/checkout@v7
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Install Dependencies
run: brew install --force mpv && brew install --force dylibbundler
- name: Setup path
run: export C_INCLUDE_PATH=/usr/local/include:/opt/homebrew/include:$C_INCLUDE_PATH && export LIBRARY_PATH=/usr/local/lib:/opt/homebrew/lib:$LIBRARY_PATH
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Package app bundle
run: >
make package_macos &&
make bundledeps_macos_homebrew &&
make zip_macos
- name: Rename artifact
run: mv Supersonic.zip Supersonic_mac_arm64.zip
- name: Upload package
uses: actions/upload-artifact@v7
with:
name: Supersonic_mac_arm64.zip
path: Supersonic_mac_arm64.zip
build-macos-x64:
name: Build macOS x64
runs-on: macos-15-intel
timeout-minutes: 30
steps:
- uses: actions/checkout@v7
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Install Dependencies
run: brew install --force mpv && brew install --force dylibbundler
- name: Setup path
run: export C_INCLUDE_PATH=/usr/local/include:/opt/homebrew/include:$C_INCLUDE_PATH && export LIBRARY_PATH=/usr/local/lib:/opt/homebrew/lib:$LIBRARY_PATH
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Build and package app bundles
run: >
make package_macos &&
cp -r Supersonic.app Supersonic.app.2 &&
make bundledeps_macos_homebrew && make zip_macos &&
mv Supersonic.zip Supersonic_mac_x64_BigSur+.zip &&
rm -r Supersonic.app &&
mv Supersonic.app.2 Supersonic.app &&
make bundledeps_macos_highsierra && make zip_macos &&
mv Supersonic.zip Supersonic_mac_x64_HighSierra+.zip
- name: Upload Big Sur+ package
uses: actions/upload-artifact@v7
with:
name: Supersonic_mac_x64_BigSur+.zip
path: Supersonic_mac_x64_BigSur+.zip
- name: Upload High Sierra+ package
uses: actions/upload-artifact@v7
with:
name: Supersonic_mac_x64_HighSierra+.zip
path: Supersonic_mac_x64_HighSierra+.zip
build-ubuntu-22:
name: Build Ubuntu 22.04
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v7
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-dev libwayland-dev
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Fyne package
run: make package_linux
- name: Rename artifact
run: mv Supersonic.tar.xz Supersonic_ubuntu22.04_x64.tar.xz
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: Supersonic_ubuntu22.04_x64.tar.xz
path: Supersonic_ubuntu22.04_x64.tar.xz
build-ubuntu-24:
name: Build Ubuntu 24.04
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v7
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-dev libwayland-dev
- name: Install Fyne tool
run: go install fyne.io/fyne/v2/cmd/fyne@latest
- name: Fyne package
run: make package_linux
- name: Rename artifact
run: mv Supersonic.tar.xz Supersonic_ubuntu24.04_x64.tar.xz
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: Supersonic_ubuntu24.04_x64.tar.xz
path: Supersonic_ubuntu24.04_x64.tar.xz
build-appimage:
name: Build AppImage
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v7
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-dev libwayland-dev
- name: Build
run: make build
- name: Make appimage
run: |
chmod +x ./scripts/appimage-build.sh
./scripts/appimage-build.sh --manual-libs
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: Supersonic-x86_64.AppImage
path: Supersonic-x86_64.AppImage
release:
name: Create Draft Release
needs:
- build-windows
- build-macos-arm64
- build-macos-x64
- build-ubuntu-22
- build-ubuntu-24
- build-appimage
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v8
with:
path: artifacts
merge-multiple: true
- name: Create draft release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "${{ github.ref_name }}" \
--repo "${{ github.repository }}" \
--draft \
--title "${{ github.ref_name }}" \
--generate-notes \
artifacts/*