Skip to content

Merge pull request #207 from bohning/fix-win-build #34

Merge pull request #207 from bohning/fix-win-build

Merge pull request #207 from bohning/fix-win-build #34

Workflow file for this run

name: Release
on:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+" # Only create releases on matching tags following semver X.Y.Z
jobs:
build:
name: Build packages
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
TARGET: Linux
PYINSTALLER_ARGS: "--onefile --add-data 'data/song_list.json:data'"
- os: macos-latest
TARGET: macOS
PYINSTALLER_ARGS: "--windowed --icon src/usdb_syncer/gui/resources/appicon_128x128.png --add-data 'data/song_list.json:data'"
- os: windows-latest
TARGET: Windows
PYINSTALLER_ARGS: "--onefile --icon src/usdb_syncer/gui/resources/appicon_128x128.png --add-data 'data/song_list.json;data'"
steps:
- uses: actions/checkout@v3
- name: Install Linux specific dependencies for dbus-python
if: matrix.TARGET == 'Linux'
run: |
sudo apt install -y gcc python3-dev libdbus-1-dev
pkg-config --cflags --libs dbus-1
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: "6.5.*"
setup-python: false
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Pipenv
run: |
python -m pip install pipenv
- name: Install dependencies
run: |
pipenv sync --system
- name: Prepend src to PYTHONPATH (Windows)
run: |
echo "PERSISTENT_PYTHONPATH=$(pwd)\src;$env:PYTHONPATH" >> $env:GITHUB_ENV
if: matrix.TARGET == 'Windows'
- name: Prepend src to PYTHONPATH (Linux/macOS)
run: |
echo "PERSISTENT_PYTHONPATH=$(pwd)/src:$PYTHONPATH" >> $GITHUB_ENV
if: matrix.TARGET == 'Linux' || matrix.TARGET == 'macOS'
- name: Write version and commit hash
run: python -m src.tools.write_release_info -p src/usdb_syncer/constants.py -v ${{ github.ref_name }} -c ${{ github.workflow_sha }}
env:
PYTHONPATH: ${{ env.PERSISTENT_PYTHONPATH }}
- name: Generate GUI elements
run: python -m src.tools.generate_pyside_files
env:
PYTHONPATH: ${{ env.PERSISTENT_PYTHONPATH }}
- name: Scrape USDB song list to ship with the bundle
run: python -m src.tools.generate_song_list_json -t 'data/song_list.json' -u '${{ secrets.USDB_USER }}' -p '${{ secrets.USDB_PASSWORD }}'
env:
PYTHONPATH: ${{ env.PERSISTENT_PYTHONPATH }}
- name: add dependencies for xcb support
if: matrix.TARGET == 'Linux'
run: |
sudo apt install libxcb-cursor0
- name: Build with pyinstaller for ${{matrix.os}}
run: pyinstaller -n 'USDB_Syncer-${{github.ref_name}}-${{matrix.TARGET}}' ${{matrix.PYINSTALLER_ARGS}} src/usdb_syncer/main.py
- name: Create DMG
if: matrix.TARGET == 'macOS'
run: |
brew install create-dmg
create-dmg \
--volname "USDB Syncer" \
--volicon "src/usdb_syncer/gui/resources/appicon_128x128.png" \
--window-pos 200 120 \
--window-size 600 300 \
--icon-size 128 \
--text-size 14 \
--icon "USDB_Syncer-${{github.ref_name}}-${{matrix.TARGET}}.app" 175 120 \
--hide-extension "USDB_Syncer-${{github.ref_name}}-${{matrix.TARGET}}.app" \
--app-drop-link 425 120 \
--hdiutil-quiet \
--no-internet-enable \
"dist/USDB_Syncer-${{github.ref_name}}-${{matrix.TARGET}}.dmg" \
"dist/USDB_Syncer-${{github.ref_name}}-${{matrix.TARGET}}.app"
- uses: actions/upload-artifact@v3
with:
name: artifacts
path: |
dist/*Linux
dist/*.dmg
dist/*.exe
CHANGELOG.md
release:
name: Create release
permissions:
contents: write
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
- name: Extract Release Notes
id: extract_notes
run: |
awk 'BEGIN { RS="<!-- [0-9]+\\.[0-9]+\\.[0-9]+ -->\\s*"; ORS=""; } NR==2 { print $0; exit; }' artifacts/CHANGELOG.md >CHANGELOG.md
shell: bash
- uses: ncipollo/release-action@v1
with:
artifacts: "artifacts/dist/*"
bodyFile: "CHANGELOG.md"