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/20260610/mpv-dev-x86_64-20260610-git-304426c.7z && 7z x mpv-dev-x86_64-20260610-git-304426c.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 libxkbcommon-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 libxkbcommon-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 libxkbcommon-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/*