Consolidate workflows into CI and release; add draft release on tag push

Replaces 7 separate workflow files with ci.yml (lint + all platform builds
on push to main and PRs) and release.yml (same builds + draft GitHub release
creation triggered by v* tags). Also fixes Ubuntu artifact name collision and
gives all output files descriptive names.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Drew Weymouth
2026-03-05 15:57:38 -08:00
co-authored by Claude Sonnet 4.6
parent 577cdcf97a
commit ade47f3e72
9 changed files with 471 additions and 324 deletions
-39
View File
@@ -1,39 +0,0 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Build AppImage-compat
on:
push:
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-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.AppImage
path: Supersonic-x86_64.AppImage
-49
View File
@@ -1,49 +0,0 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Build Mac arm64
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: macos-14
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- 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: '1.24'
- 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/tools/cmd/fyne@latest
- name: Package app bundles
run: >
make package_macos &&
make bundledeps_macos_homebrew &&
make zip_macos
- name: Upload package
uses: actions/upload-artifact@v7
with:
name: Supersonic.zip
path: Supersonic.zip
-60
View File
@@ -1,60 +0,0 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Build Mac x64
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: macos-15-intel
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- 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: '1.24'
- 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/tools/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_BigSur+.zip &&
rm -r Supersonic.app &&
mv Supersonic.app.2 Supersonic.app &&
make bundledeps_macos_highsierra && make zip_macos &&
mv Supersonic.zip Supersonic_HighSierra+.zip
- name: Upload Big Sur+ package
uses: actions/upload-artifact@v7
with:
name: Supersonic_mac_x64_BigSur+.zip
path: Supersonic_BigSur+.zip
- name: Upload High Sierra+ package
uses: actions/upload-artifact@v7
with:
name: Supersonic_mac_x64_HighSierra+.zip
path: Supersonic_HighSierra+.zip
-37
View File
@@ -1,37 +0,0 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Build Ubuntu 22.04
on:
push:
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install libmpv-dev gcc libegl1-mesa-dev xorg-dev
- name: Install Fyne tool
run: go install fyne.io/tools/cmd/fyne@latest
- name: Fyne package
run: make package_linux
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: Supersonic_ubuntu_x64.tar.xz
path: Supersonic.tar.xz
-37
View File
@@ -1,37 +0,0 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Build Ubuntu 24.04
on:
push:
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install libmpv-dev gcc libegl1-mesa-dev xorg-dev
- name: Install Fyne tool
run: go install fyne.io/tools/cmd/fyne@latest
- name: Fyne package
run: make package_linux
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: Supersonic_ubuntu_x64.tar.xz
path: Supersonic.tar.xz
-74
View File
@@ -1,74 +0,0 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Build Windows
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- 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/tools/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.zip Supersonic.exe libmpv-2.dll SMTC.dll
- name: Generate installer
uses: Minionguyjpro/Inno-Setup-Action@v1.2.7
with:
path: win_inno_installscript.iss
- name: Upload zip
uses: actions/upload-artifact@v7
with:
name: Supersonic_windows_x64.zip
path: Supersonic-windows.zip
- name: Upload installer
uses: actions/upload-artifact@v7
with:
name: Supersonic_windows_x64_installer.exe
path: Output/supersonic-installer.exe
+231
View File
@@ -0,0 +1,231 @@
name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
pull-requests: read
steps:
- uses: actions/checkout@v6
- 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
- name: golangci-lint
uses: golangci/golangci-lint-action@v9
with:
version: v2.8
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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- 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/tools/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.7
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@v6
- 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: '1.24'
- 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/tools/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@v6
- 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: '1.24'
- 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/tools/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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-dev
- name: Install Fyne tool
run: go install fyne.io/tools/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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-dev
- name: Install Fyne tool
run: go install fyne.io/tools/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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-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
-28
View File
@@ -1,28 +0,0 @@
# https://github.com/marketplace/actions/golangci-lint
name: golangci-lint
on:
push:
branches:
pull_request:
permissions:
contents: read
# Optional: allow read access to pull request. Use with `only-new-issues` option.
pull-requests: read
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: stable
- name: Install dependencies
run: sudo apt update && sudo apt install libmpv-dev gcc libegl1-mesa-dev xorg-dev
- name: golangci-lint
uses: golangci/golangci-lint-action@v9
with:
version: v2.8
+240
View File
@@ -0,0 +1,240 @@
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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- 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/tools/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.7
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@v6
- 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: '1.24'
- 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/tools/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@v6
- 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: '1.24'
- 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/tools/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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-dev
- name: Install Fyne tool
run: go install fyne.io/tools/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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-dev
- name: Install Fyne tool
run: go install fyne.io/tools/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@v6
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'
- name: Install dependencies
run: sudo apt update && sudo apt install -y libmpv-dev gcc libegl1-mesa-dev xorg-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@v4
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/*