Extends Python version support to include 3.13 in CI workflows, tox environments, and documentation. Updates dependencies to ensure compatibility with the new Python version and resolves legacy workarounds for macOS GitHub Actions runners. Upgrades include: - `pyside6` to version 6.9.1 - `click` to version 8.2.1 - Other relevant dependency updates for compatibility. Re-enables `pyupgrade` pre-commit hook targeting Python 3.12+. Fixed binary creation for Intel macOS.
169 lines
6.8 KiB
YAML
169 lines
6.8 KiB
YAML
name: release-master
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
on:
|
|
# release:
|
|
# types: [published]
|
|
# branches: [master]
|
|
push:
|
|
tags:
|
|
- "v*.*.*"
|
|
|
|
env:
|
|
ASSET_EXTENSION: ".zip"
|
|
OUT_NAME_FILE: "TIDAL-Downloader-NG"
|
|
ARCH_MACOS_X64: "macos-x64"
|
|
ARCH_MACOS_ARM64: "macos-arm64"
|
|
ARCH_LINUX_X64: "linux-x64"
|
|
ARCH_LINUX_ARM64: "linux-arm64"
|
|
ARCH_WINDOWS_X64: "windows-x64"
|
|
ARCH_WINDOWS_ARM64: "windows-arm"
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Check out
|
|
uses: actions/checkout@v4
|
|
- name: Set up the environment
|
|
uses: ./.github/actions/setup-poetry-env
|
|
- name: Export tag
|
|
id: vars
|
|
run: echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT
|
|
- name: Build and publish (PyPi)
|
|
run: |
|
|
source .venv/bin/activate
|
|
poetry version $RELEASE_VERSION
|
|
make build-and-publish
|
|
env:
|
|
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
|
RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
|
|
POETRY_REQUESTS_TIMEOUT: 120
|
|
- name: GitHub Release -- Create
|
|
id: release_create
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
draft: false
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
deploy-docs:
|
|
needs: publish
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Check out
|
|
uses: actions/checkout@v4
|
|
- name: Set up the environment
|
|
uses: ./.github/actions/setup-poetry-env
|
|
- name: Deploy documentation
|
|
run: poetry run mkdocs gh-deploy --force
|
|
compute:
|
|
# Workaround to be able to use variables in matrix.
|
|
# See: https://stackoverflow.com/questions/74072206/github-actions-use-variables-in-matrix-definition
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
ASSET_EXTENSION: ${{ env.ASSET_EXTENSION }}
|
|
OUT_NAME_FILE: ${{ env.OUT_NAME_FILE }}
|
|
ARCH_MACOS_X64: ${{ env.ARCH_MACOS_X64 }}
|
|
ARCH_MACOS_ARM64: ${{ env.ARCH_MACOS_ARM64 }}
|
|
ARCH_LINUX_X64: ${{ env.ARCH_LINUX_X64 }}
|
|
ARCH_LINUX_ARM64: ${{ env.ARCH_LINUX_ARM64 }}
|
|
ARCH_WINDOWS_X64: ${{ env.ARCH_WINDOWS_X64 }}
|
|
ARCH_WINDOWS_ARM64: ${{ env.ARCH_WINDOWS_ARM64 }}
|
|
steps:
|
|
- name: Compute outputs
|
|
run: |
|
|
echo "ASSET_EXTENSION=${{ env.ASSET_EXTENSION }}" >> $GITHUB_OUTPUT
|
|
echo "OUT_NAME_FILE=${{ env.OUT_NAME_FILE }}" >> $GITHUB_OUTPUT
|
|
echo "ARCH_MACOS_X64=${{ env.ARCH_MACOS_X64 }}" >> $GITHUB_OUTPUT
|
|
echo "ARCH_MACOS_ARM64=${{ env.ARCH_MACOS_ARM64 }}" >> $GITHUB_OUTPUT
|
|
echo "ARCH_LINUX_X64=${{ env.ARCH_LINUX_X64 }}" >> $GITHUB_OUTPUT
|
|
echo "ARCH_LINUX_ARM64=${{ env.ARCH_LINUX_ARM64 }}" >> $GITHUB_OUTPUT
|
|
echo "ARCH_WINDOWS_X64=${{ env.ARCH_WINDOWS_X64 }}" >> $GITHUB_OUTPUT
|
|
echo "ARCH_WINDOWS_ARM64=${{ env.ARCH_WINDOWS_ARM64 }}" >> $GITHUB_OUTPUT
|
|
build-gui-and-upload-assets:
|
|
needs: ["publish", "compute"]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: "macos-13"
|
|
TARGET: "macos-13"
|
|
OS_ARCH: ${{needs.compute.outputs.ARCH_MACOS_X64}}
|
|
CMD_BUILD: >
|
|
brew install create-dmg &&
|
|
source $VENV &&
|
|
poetry run make gui-macos-dmg-intel APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd dist &&
|
|
zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_MACOS_X64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}}.dmg -x "*.DS_Store" &&
|
|
cd ..
|
|
- os: "macos-14"
|
|
TARGET: "macos-14 M1"
|
|
OS_ARCH: ${{needs.compute.outputs.ARCH_MACOS_ARM64}}
|
|
CMD_BUILD: >
|
|
brew install create-dmg &&
|
|
source $VENV &&
|
|
poetry run make gui-macos-dmg APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd dist &&
|
|
zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_MACOS_ARM64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}}.dmg -x "*.DS_Store" &&
|
|
cd ..
|
|
- os: "ubuntu-22.04"
|
|
TARGET: "ubuntu-22.04"
|
|
OS_ARCH: ${{needs.compute.outputs.ARCH_LINUX_X64}}
|
|
CMD_BUILD: >
|
|
source $VENV &&
|
|
poetry run make gui-linux APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd dist &&
|
|
zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_LINUX_X64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd ..
|
|
- os: "ubuntu-22.04-arm"
|
|
TARGET: "ubuntu-22.04-arm"
|
|
OS_ARCH: ${{needs.compute.outputs.ARCH_LINUX_ARM64}}
|
|
CMD_BUILD: >
|
|
source $VENV &&
|
|
poetry run make gui-linux APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd dist &&
|
|
zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_LINUX_ARM64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd ..
|
|
- os: "windows-2022"
|
|
TARGET: "windows-2022"
|
|
OS_ARCH: ${{needs.compute.outputs.ARCH_WINDOWS_X64}}
|
|
CMD_BUILD: >
|
|
choco install zip make -y &&
|
|
source $VENV &&
|
|
poetry run make gui-windows APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd dist &&
|
|
zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_WINDOWS_X64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd ..
|
|
- os: "windows-11-arm"
|
|
TARGET: "windows-11-arm"
|
|
OS_ARCH: ${{needs.compute.outputs.ARCH_WINDOWS_ARM64}}
|
|
CMD_BUILD: >
|
|
choco install zip make -y &&
|
|
source $VENV &&
|
|
poetry run make gui-windows APP_NAME=${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd dist &&
|
|
zip -r ${{needs.compute.outputs.OUT_NAME_FILE}}_${{needs.compute.outputs.ARCH_WINDOWS_ARM64}}${{needs.compute.outputs.ASSET_EXTENSION}} ${{needs.compute.outputs.OUT_NAME_FILE}} &&
|
|
cd ..
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Check out
|
|
uses: actions/checkout@v4
|
|
- name: Set up the environment
|
|
uses: ./.github/actions/setup-poetry-env
|
|
- name: Build with pyinstaller for ${{matrix.TARGET}}
|
|
run: ${{matrix.CMD_BUILD}}
|
|
- name: Upload Release Asset
|
|
id: upload-release-asset
|
|
uses: softprops/action-gh-release@v2
|
|
env:
|
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
with:
|
|
files: |
|
|
./dist/${{needs.compute.outputs.OUT_NAME_FILE}}_${{matrix.OS_ARCH}}${{needs.compute.outputs.ASSET_EXTENSION}}
|