mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-06-17 00:37:49 +00:00
5460f95eac
According to the changelog, the latest version that uses > 3.37 is Python 3.10.9, so switch back to an older version of it until Ubuntu pick up more recent versions of SQLite
295 lines
9.1 KiB
YAML
295 lines
9.1 KiB
YAML
name: Builder
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
# schedule:
|
|
# - cron: '0 13 * * *' # run at 1 PM UTC
|
|
workflow_dispatch:
|
|
inputs:
|
|
release:
|
|
type: choice
|
|
description: Release the asset
|
|
default: 'none'
|
|
options:
|
|
- none
|
|
- prerelease
|
|
- release
|
|
bump:
|
|
type: choice
|
|
description: Semver to bump
|
|
default: 'none'
|
|
options:
|
|
- none
|
|
- patch
|
|
- minor
|
|
- major
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build:
|
|
name: Build PluginLoader
|
|
runs-on: ubuntu-22.04
|
|
|
|
steps:
|
|
- name: Print input
|
|
run : |
|
|
echo "release: ${{ github.event.inputs.release }}\n"
|
|
echo "bump: ${{ github.event.inputs.bump }}\n"
|
|
|
|
- name: Checkout 🧰
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up NodeJS 18 💎
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Set up Python 3.10.6 🐍
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.10.6"
|
|
|
|
- name: Install Python dependencies ⬇️
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install pyinstaller==5.13.0
|
|
[ -f requirements.txt ] && pip install -r requirements.txt
|
|
|
|
- name: Install JS dependencies ⬇️
|
|
working-directory: ./frontend
|
|
run: |
|
|
npm i -g pnpm
|
|
pnpm i --frozen-lockfile
|
|
|
|
- name: Build JS Frontend 🛠️
|
|
working-directory: ./frontend
|
|
run: pnpm run build
|
|
|
|
- name: Build Python Backend 🛠️
|
|
run: pyinstaller --noconfirm --onefile --name "PluginLoader" --add-data ./backend/static:/static --add-data ./backend/locales:/locales --add-data ./backend/legacy:/legacy --add-data ./plugin:/plugin --hidden-import=sqlite3 ./backend/*.py
|
|
|
|
- name: Upload package artifact ⬆️
|
|
if: ${{ !env.ACT }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PluginLoader
|
|
path: ./dist/PluginLoader
|
|
|
|
- name: Download package artifact locally
|
|
if: ${{ env.ACT }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
path: ./dist/PluginLoader
|
|
|
|
build-win:
|
|
name: Build PluginLoader for Win
|
|
runs-on: windows-2022
|
|
|
|
steps:
|
|
- name: Checkout 🧰
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up NodeJS 18 💎
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Set up Python 3.10.6 🐍
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.10.6"
|
|
|
|
- name: Install Python dependencies ⬇️
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install pyinstaller==5.13.0
|
|
pip install -r requirements.txt
|
|
|
|
- name: Install JS dependencies ⬇️
|
|
working-directory: ./frontend
|
|
run: |
|
|
npm i -g pnpm
|
|
pnpm i --frozen-lockfile
|
|
|
|
- name: Build JS Frontend 🛠️
|
|
working-directory: ./frontend
|
|
run: pnpm run build
|
|
|
|
- name: Build Python Backend 🛠️
|
|
run: pyinstaller --noconfirm --onefile --name "PluginLoader" --add-data "./backend/static;/static" --add-data "./backend/locales;/locales" --add-data "./backend/legacy;/legacy" --add-data "./plugin;/plugin" --hidden-import=sqlite3 ./backend/main.py
|
|
|
|
- name: Upload package artifact ⬆️
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PluginLoader Win
|
|
path: ./dist/PluginLoader.exe
|
|
|
|
release:
|
|
name: Release stable version of the package
|
|
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release == 'release' }}
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout 🧰
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install semver-tool asdf
|
|
uses: asdf-vm/actions/install@v1
|
|
with:
|
|
tool_versions: |
|
|
semver 3.3.0
|
|
|
|
- name: Fetch package artifact ⬇️
|
|
uses: actions/download-artifact@v3
|
|
if: ${{ !env.ACT }}
|
|
with:
|
|
name: PluginLoader
|
|
path: dist
|
|
|
|
- name: Get latest release
|
|
uses: rez0n/actions-github-release@main
|
|
id: latest_release
|
|
env:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
repository: "SteamDeckHomebrew/decky-loader"
|
|
type: "nodraft"
|
|
|
|
- name: Prepare tag ⚙️
|
|
id: ready_tag
|
|
run: |
|
|
export VERSION=${{ steps.latest_release.outputs.release }}
|
|
echo "VERS: $VERSION"
|
|
OUT="notsemver"
|
|
if [[ "$VERSION" =~ "-pre" ]]; then
|
|
printf "is prerelease, bumping to release\n"
|
|
OUT=$(semver bump release "$VERSION")
|
|
printf "OUT: ${OUT}\n"\
|
|
printf "bumping by selected type.\n"
|
|
if [[ "${{github.event.inputs.bump}}" != "none" ]]; then
|
|
OUT=$(semver bump ${{github.event.inputs.bump}} "$OUT")
|
|
printf "OUT: ${OUT}\n"
|
|
else
|
|
printf "no type selected, not bumping for release.\n"
|
|
fi
|
|
elif [[ ! "$VERSION" =~ "-pre" ]]; then
|
|
printf "previous tag is a release, bumping by selected type.\n"
|
|
if [[ "${{github.event.inputs.bump}}" != "none" ]]; then
|
|
OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION")
|
|
printf "OUT: ${OUT}\n"
|
|
else
|
|
printf "previous tag is a release, but no bump selected. Defaulting to a patch bump.\n"
|
|
OUT=$(semver bump patch "$VERSION")
|
|
printf "OUT: ${OUT}\n"
|
|
fi
|
|
fi
|
|
echo "vOUT: v$OUT"
|
|
echo tag_name=v$OUT >> $GITHUB_OUTPUT
|
|
|
|
- name: Push tag 📤
|
|
uses: rickstaa/action-create-tag@v1.3.2
|
|
if: ${{ steps.ready_tag.outputs.tag_name && github.event_name == 'workflow_dispatch' && !env.ACT }}
|
|
with:
|
|
tag: ${{ steps.ready_tag.outputs.tag_name }}
|
|
message: Pre-release ${{ steps.ready_tag.outputs.tag_name }}
|
|
|
|
- name: Release 📦
|
|
uses: softprops/action-gh-release@v1
|
|
if: ${{ github.event_name == 'workflow_dispatch' && !env.ACT }}
|
|
with:
|
|
name: Release ${{ steps.ready_tag.outputs.tag_name }}
|
|
tag_name: ${{ steps.ready_tag.outputs.tag_name }}
|
|
files: ./dist/PluginLoader
|
|
prerelease: false
|
|
generate_release_notes: true
|
|
|
|
prerelease:
|
|
name: Release the pre-release version of the package
|
|
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release == 'prerelease' }}
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout 🧰
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install semver-tool asdf
|
|
uses: asdf-vm/actions/install@v1
|
|
with:
|
|
tool_versions: |
|
|
semver 3.3.0
|
|
|
|
- name: Fetch package artifact ⬇️
|
|
uses: actions/download-artifact@v3
|
|
if: ${{ !env.ACT }}
|
|
with:
|
|
name: PluginLoader
|
|
path: dist
|
|
|
|
- name: Get latest release
|
|
uses: rez0n/actions-github-release@main
|
|
id: latest_release
|
|
env:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
repository: "SteamDeckHomebrew/decky-loader"
|
|
type: "nodraft"
|
|
|
|
- name: Prepare tag ⚙️
|
|
id: ready_tag
|
|
run: |
|
|
export VERSION=${{ steps.latest_release.outputs.release }}
|
|
echo "VERS: $VERSION"
|
|
OUT=""
|
|
if [[ ! "$VERSION" =~ "-pre" ]]; then
|
|
printf "pre-release from release, bumping by selected type and prerel\n"
|
|
if [[ ! ${{ github.event.inputs.bump }} == "none" ]]; then
|
|
OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION")
|
|
printf "OUT: ${OUT}\n"
|
|
else
|
|
printf "type not selected, defaulting to patch\n"
|
|
OUT=$(semver bump patch "$VERSION")
|
|
printf "OUT: ${OUT}\n"
|
|
fi
|
|
OUT="$OUT-pre"
|
|
OUT=$(semver bump prerel "$OUT")
|
|
printf "OUT: ${OUT}\n"
|
|
elif [[ "$VERSION" =~ "-pre" ]]; then
|
|
printf "pre-release to pre-release, bumping by selected type and or prerel version\n"
|
|
if [[ ! ${{ github.event.inputs.bump }} == "none" ]]; then
|
|
OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION")
|
|
printf "OUT: ${OUT}\n"
|
|
OUT="$OUT-pre"
|
|
printf "OUT: ${OUT}\n"
|
|
printf "bumping prerel\n"
|
|
OUT=$(semver bump prerel "$OUT")
|
|
printf "OUT: ${OUT}\n"
|
|
else
|
|
printf "type not selected, defaulting to new pre-release only\n"
|
|
printf "bumping prerel\n"
|
|
OUT=$(semver bump prerel "$VERSION")
|
|
printf "OUT: ${OUT}\n"
|
|
fi
|
|
fi
|
|
printf "vOUT: v${OUT}\n"
|
|
echo tag_name=v$OUT >> $GITHUB_OUTPUT
|
|
|
|
- name: Push tag 📤
|
|
uses: rickstaa/action-create-tag@v1.3.2
|
|
if: ${{ steps.ready_tag.outputs.tag_name && github.event_name == 'workflow_dispatch' && !env.ACT }}
|
|
with:
|
|
tag: ${{ steps.ready_tag.outputs.tag_name }}
|
|
message: Pre-release ${{ steps.ready_tag.outputs.tag_name }}
|
|
|
|
- name: Release 📦
|
|
uses: softprops/action-gh-release@v1
|
|
if: ${{ github.event_name == 'workflow_dispatch' && !env.ACT }}
|
|
with:
|
|
name: Prerelease ${{ steps.ready_tag.outputs.tag_name }}
|
|
tag_name: ${{ steps.ready_tag.outputs.tag_name }}
|
|
files: ./dist/PluginLoader
|
|
prerelease: true
|
|
generate_release_notes: true
|