Skip to content

Publish

Publish #150

Workflow file for this run

name: Publish
on:
workflow_dispatch:
inputs:
version:
description: 'Version to bump to'
required: true
type: choice
options:
- patch
- minor
- major
update_frontend:
description: 'Try to pull the latest changes from the frontend repository (companion branch)'
required: false
type: boolean
default: true
jobs:
update_version:
permissions:
contents: write
runs-on: ubuntu-22.04
outputs:
version: ${{ steps.semver.outputs.semantic-version }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: true
- name: Update frontend
if: ${{ inputs.update_frontend == 'true' }}
run: |
cd frontend
git pull
cd ..
- id: semver
uses: SOLIDSoftworks/semver-tags@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}
tag-prefix: 'v'
incremented-value: ${{ inputs.version }}
- name: NPM-Version
uses: Reedyuk/[email protected]
with:
version: ${{ steps.semver.outputs.semantic-version }}
- name: Update cargo and tauri version
run: |
sudo apt install jq
sed -i '0,/\(version *= *\).*/s//\1"${{ steps.semver.outputs.semantic-version }}"/' src-tauri/Cargo.toml
jq '.version="${{ steps.semver.outputs.semantic-version }}"' src-tauri/tauri.conf.json > tauri.config.json.new && mv tauri.config.json.new src-tauri/tauri.conf.json
sed -i '/name = "music-assistant-companion"/{N;s/\(version *= *\)".*"/\1"'"${{ steps.semver.outputs.semantic-version }}"'"/;}' src-tauri/Cargo.lock
- name: Commit and push changes
run: |
git config --global user.name "Jonathan Bangert"
git config --global user.email "[email protected]"
git add -A
git commit -m "Update version to ${{ steps.semver.outputs.semantic-version }}"
git push
build:
needs: update_version
permissions:
contents: write
strategy:
fail-fast: false
matrix:
platform: [macos-latest, ubuntu-24.04, windows-latest, macos-15]
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: true
- name: Pull latest changes
run: |
git pull
- name: Install linux dependencies
shell: bash
if: runner.os == 'Linux'
run: |
sudo apt update;
sudo apt install -y \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libappindicator3-dev \
librsvg2-dev;
sudo apt install -y \
libwebkit2gtk-4.1-0=2.44.0-2 \
libwebkit2gtk-4.1-dev=2.44.0-2 \
libjavascriptcoregtk-4.1-0=2.44.0-2 \
libjavascriptcoregtk-4.1-dev=2.44.0-2 \
gir1.2-javascriptcoregtk-4.1=2.44.0-2 \
gir1.2-webkit2-4.1=2.44.0-2;
- name: Install Rust (Stable)
run:
curl https://sh.rustup.rs -sSf | sh -s -- -y
- name: Install Rust aarch (Mac)
if: matrix.platform == 'macos-latest'
run: rustup target add aarch64-apple-darwin
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: './src-tauri -> target'
cache-on-failure: true
- name: Sync node version and setup cache
uses: actions/setup-node@v3
with:
node-version: 'lts/*'
cache: 'yarn' # Set this to npm, yarn or pnpm.
- name: Install frontend dependencies
if: matrix.platform != 'windows-latest'
# If you don't have `beforeBuildCommand` configured you may want to build your frontend here too.
run: yarn install && cd $GITHUB_WORKSPACE/frontend/ && yarn install && cd $GITHUB_WORKSPACE # Change this to npm, yarn or pnpm.
- name: Install frontend dependencies (Windows)
if: matrix.platform == 'windows-latest'
# If you don't have `beforeBuildCommand` configured you may want to build your frontend here too.
run: yarn install && cd $env:GITHUB_WORKSPACE/frontend/ && yarn install && cd $env:GITHUB_WORKSPACE # Change this to npm, yarn or pnpm.
- name: Build the app (Linux)
if: runner.os == 'Linux'
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
with:
tagName: v${{ needs.update_version.outputs.version }}
releaseName: "Music Assistant Companion App ${{ needs.update_version.outputs.version }}"
releaseBody: "Fixes"
- name: Build the app (Windows)
if: matrix.platform == 'windows-latest'
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
with:
tagName: v${{ needs.update_version.outputs.version }}
releaseName: "Music Assistant Companion App ${{ needs.update_version.outputs.version }}"
releaseBody: "Fixes"
- name: Build the app (Mac (Apple Silicon))
if: matrix.platform == 'macos-latest'
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
with:
args: --target aarch64-apple-darwin
tagName: v${{ needs.update_version.outputs.version }}
releaseName: "Music Assistant Companion App ${{ needs.update_version.outputs.version }}"
releaseBody: "Fixes"
# - name: Upload app to app store
# if: matrix.platform == 'macos-latest'
# run: |
# unset APPLE_SIGNING_IDENTITY
# unset APPLE_CERTIFICATE
# sign_app="3rd Party Mac Developer Application: COMPANY_NAME (TEAM_ID)"
# sign_install="3rd Party Mac Developer Installer: COMPANY_NAME (TEAM_ID)"
# profile="src-tauri/Mac_App_Distribution.provisionprofile"
#
# app_path="src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Music Assistant Companion.app"
# build_name="src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Music Assistant Companion.pkg"
# cp_dir="src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Music Assistant Companion.app/Contents/embedded.provisionprofile"
# entitlements="src-tauri/Entitlements.plist"
#
# cp "${profile}" "${cp_dir}"
#
# codesign --deep --force -s "${sign_app}" --entitlements ${entitlements} "${app_path}"
#
# productbuild --component "${app_path}" /Applications/ --sign "${sign_install}" "${build_name}"
#
# xcrun altool --upload-app -f file -t platform -u username [-p password]
- name: Build the app (Mac)
if: matrix.platform == 'macos-15'
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
with:
tagName: v${{ needs.update_version.outputs.version }}
releaseName: "Music Assistant Companion App ${{ needs.update_version.outputs.version }}"
releaseBody: "Fixes"
- name: Upload linux binary
if: runner.os == 'Linux'
uses: svenstaro/upload-release-action@v2
with:
tag: v${{ needs.update_version.outputs.version }}
asset_name: music-assistant-companion-${{ needs.update_version.outputs.version }}
file: src-tauri/target/release/music-assistant-companion
- name: Upload squeezelite binary
if: runner.os == 'Linux'
uses: svenstaro/upload-release-action@v2
with:
tag: v${{ needs.update_version.outputs.version }}
file: src-tauri/bin/squeezelite-x86_64-unknown-linux-gnu