summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/build-linux-arm64.yml14
-rw-r--r--.github/workflows/build-linux-x86_64.yml14
-rw-r--r--.github/workflows/build-mac.yml14
-rw-r--r--.github/workflows/build-win-arm64.yml19
-rw-r--r--.github/workflows/build-win-x86_64.yml19
-rw-r--r--.github/workflows/build-win.yml67
-rw-r--r--.github/workflows/build.yml67
-rw-r--r--.github/workflows/edit-check.yml4
-rw-r--r--.github/workflows/lint.yml7
-rw-r--r--.github/workflows/release.yml83
-rw-r--r--.github/workflows/typecheck.yml16
11 files changed, 209 insertions, 115 deletions
diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml
new file mode 100644
index 00000000..fdf84c7e
--- /dev/null
+++ b/.github/workflows/build-linux-arm64.yml
@@ -0,0 +1,14 @@
+name: Builder (Linux, arm64)
+
+on:
+ push:
+ pull_request:
+ workflow_call:
+
+jobs:
+ build:
+ uses: ./.github/workflows/build.yml
+ with:
+ arch: arm64
+ os: Linux
+ artifact_name: PluginLoader-arm64 \ No newline at end of file
diff --git a/.github/workflows/build-linux-x86_64.yml b/.github/workflows/build-linux-x86_64.yml
new file mode 100644
index 00000000..9aa05b52
--- /dev/null
+++ b/.github/workflows/build-linux-x86_64.yml
@@ -0,0 +1,14 @@
+name: Builder (Linux, x86_64)
+
+on:
+ push:
+ pull_request:
+ workflow_call:
+
+jobs:
+ build:
+ uses: ./.github/workflows/build.yml
+ with:
+ arch: x86_64
+ os: Linux
+ artifact_name: PluginLoader \ No newline at end of file
diff --git a/.github/workflows/build-mac.yml b/.github/workflows/build-mac.yml
new file mode 100644
index 00000000..3daf1132
--- /dev/null
+++ b/.github/workflows/build-mac.yml
@@ -0,0 +1,14 @@
+name: Builder (macOS)
+
+on:
+ push:
+ pull_request:
+ workflow_call:
+
+jobs:
+ build:
+ uses: ./.github/workflows/build.yml
+ with:
+ arch: arm64
+ os: macOS
+ artifact_name: PluginLoader-mac \ No newline at end of file
diff --git a/.github/workflows/build-win-arm64.yml b/.github/workflows/build-win-arm64.yml
new file mode 100644
index 00000000..7274f235
--- /dev/null
+++ b/.github/workflows/build-win-arm64.yml
@@ -0,0 +1,19 @@
+name: Builder (Windows, arm64)
+
+on:
+ push:
+ pull_request:
+ workflow_call:
+
+jobs:
+ build:
+ uses: ./.github/workflows/build.yml
+ strategy:
+ matrix:
+ noconsole: [false, true]
+ with:
+ os: Windows
+ arch: arm64
+ artifact_name: PluginLoader-win-arm64${{ matrix.noconsole == true && '-noconsole' || '' }}
+ binary_name: PluginLoader.exe
+ noconsole: ${{ matrix.noconsole }} \ No newline at end of file
diff --git a/.github/workflows/build-win-x86_64.yml b/.github/workflows/build-win-x86_64.yml
new file mode 100644
index 00000000..fa0afb14
--- /dev/null
+++ b/.github/workflows/build-win-x86_64.yml
@@ -0,0 +1,19 @@
+name: Builder (Windows, x86_64)
+
+on:
+ push:
+ pull_request:
+ workflow_call:
+
+jobs:
+ build:
+ uses: ./.github/workflows/build.yml
+ strategy:
+ matrix:
+ noconsole: [false, true]
+ with:
+ os: Windows
+ arch: x86_64
+ artifact_name: PluginLoader-win${{ matrix.noconsole == true && '-noconsole' || '' }}
+ binary_name: PluginLoader.exe
+ noconsole: ${{ matrix.noconsole }} \ No newline at end of file
diff --git a/.github/workflows/build-win.yml b/.github/workflows/build-win.yml
deleted file mode 100644
index 6cf504c4..00000000
--- a/.github/workflows/build-win.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-name: Builder Win
-
-on:
- push:
- pull_request:
-
-permissions:
- contents: write
-
-jobs:
- build-win:
- name: Build PluginLoader for Win
- runs-on: windows-2022
-
- steps:
- - name: Checkout 🧰
- uses: actions/checkout@v4
-
- - name: Set up NodeJS 20 💎
- uses: actions/setup-node@v4
- with:
- node-version: 20
-
- - name: Set up Python 3.11.7 🐍
- uses: actions/setup-python@v5
- with:
- python-version: "3.11.7"
-
- - name: Install Poetry
- uses: snok/install-poetry@v1
- with:
- virtualenvs-create: false
-
- - name: Install Python dependencies ⬇️
- working-directory: ./backend
- run: |
- C:\Users\runneradmin\.local\bin\poetry self add "poetry-dynamic-versioning[plugin]"
- C:\Users\runneradmin\.local\bin\poetry install --no-interaction
-
- - 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 🛠️
- working-directory: ./backend
- run: |
- C:\Users\runneradmin\.local\bin\poetry dynamic-versioning
- C:\Users\runneradmin\.local\bin\poetry run pyinstaller pyinstaller.spec
-
- - name: Build Python Backend (noconsole) 🛠️
- working-directory: ./backend
- run: $env:DECKY_NOCONSOLE = 1; C:\Users\runneradmin\.local\bin\poetry run pyinstaller pyinstaller.spec
-
- - name: Upload package artifact ⬆️
- uses: actions/upload-artifact@v4
- with:
- name: PluginLoader Win
- path: |
- ./backend/dist/PluginLoader.exe
- ./backend/dist/PluginLoader_noconsole.exe
-
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 46a106a1..a6a56f39 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,32 +1,59 @@
name: Builder
on:
- push:
- pull_request:
workflow_call:
- # schedule:
- # - cron: '0 13 * * *' # run at 1 PM UTC
+ inputs:
+ arch:
+ description: Architecture to build for (x86_64, arm64)
+ type: string
+ default: x86_64
+ os:
+ description: OS to build for (Linux, macOS, Windows)
+ type: string
+ default: Linux
+ artifact_name:
+ description: Name of the uploaded artifact
+ type: string
+ default: PluginLoader
+ binary_name:
+ description: Name of the PluginLoader binary
+ type: string
+ default: PluginLoader
+ noconsole:
+ description: If the windows build is no-console
+ type: boolean
+ default: false
jobs:
build:
- name: Build PluginLoader
- runs-on: ubuntu-22.04
+ name: Build ${{ inputs.artifact_name }} (${{ inputs.os }} ${{ inputs.arch }})
+ # No support for mac x86, sorry
+ runs-on: ${{
+ (inputs.os == 'Linux' && inputs.arch == 'arm64' && 'ubuntu-26.04-arm') ||
+ (inputs.os == 'Linux' && inputs.arch == 'x86_64' && 'ubuntu-26.04') ||
+ (inputs.os == 'macOS' && inputs.arch == 'arm64' && 'xcode-27') ||
+ (inputs.os == 'Windows' && inputs.arch == 'arm64' && 'windows-11-arm') ||
+ (inputs.os == 'Windows' && inputs.arch == 'x86_64' && 'windows-2025')
+ }}
+ defaults:
+ run:
+ shell: bash
steps:
- name: Checkout 🧰
- uses: actions/checkout@v4
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- - name: Set up NodeJS 20 💎
- uses: actions/setup-node@v4
+ - name: Set up NodeJS 26 💎
+ uses: actions/setup-node@v7
with:
- node-version: 20
+ node-version: 26
- - name: Set up Python 3.11.7 🐍
- uses: actions/setup-python@v5
+ - name: Set up Python 3.14.8 🐍
+ uses: actions/setup-python@v7
with:
- python-version: "3.11.7"
+ python-version: "3.14.8"
- name: Install Poetry
uses: snok/install-poetry@v1
@@ -53,17 +80,19 @@ jobs:
working-directory: ./backend
run: |
poetry dynamic-versioning
- pyinstaller pyinstaller.spec
+ DECKY_REPO="${{ github.repository }}" DECKY_BRANCH="${{ github.event.number && format('PR{0}/{1}', github.event.number, github.head_ref) || github.ref_name }}" ${{ inputs.noconsole == true && 'DECKY_NOCONSOLE=1 ' || '' }}pyinstaller pyinstaller.spec
+ echo Builds:
+ ls ./dist
- name: Upload package artifact ⬆️
if: ${{ !env.ACT }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
- name: PluginLoader
- path: ./backend/dist/PluginLoader
+ name: ${{ inputs.artifact_name }}
+ path: ./backend/dist/${{ inputs.binary_name }}
- name: Download package artifact locally
if: ${{ env.ACT }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
- path: ./backend/dist/PluginLoader
+ path: ./backend/dist/${{ inputs.binary_name }}
diff --git a/.github/workflows/edit-check.yml b/.github/workflows/edit-check.yml
index 519d9e3e..95865a3c 100644
--- a/.github/workflows/edit-check.yml
+++ b/.github/workflows/edit-check.yml
@@ -7,14 +7,14 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout
- uses: actions/checkout@8230315d06ad95c617244d2f265d237a1682d445
+ uses: actions/checkout@v7
with:
ref: ${{ github.sha }}
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v7
- name: Get changed files
id: changed-files
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 3ff65531..cda19c28 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -10,7 +10,12 @@ jobs:
runs-on: ubuntu-22.04
steps:
- - uses: actions/checkout@v4 # Check out the repository first.
+ - uses: actions/checkout@v7 # Check out the repository first.
+
+ - name: Set up NodeJS 26 💎
+ uses: actions/setup-node@v7
+ with:
+ node-version: 26
- name: Install TypeScript dependencies
working-directory: frontend
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ac1637e4..9f69a294 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -27,13 +27,13 @@ permissions:
jobs:
create_tag:
name: Tag a new version of the package
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-26.04
outputs:
tag_name: ${{ steps.ready_tag.outputs.tag_name }}
steps:
- name: Checkout 🧰
- uses: actions/checkout@v4
+ uses: actions/checkout@v7
- name: Install semver-tool asdf
uses: asdf-vm/actions/install@v4
@@ -42,11 +42,11 @@ jobs:
semver 3.4.0
- name: Get latest release
- uses: rez0n/actions-github-release@main
+ uses: rez0n/actions-github-release@v2.1
id: latest_release
with:
token: ${{ secrets.GITHUB_TOKEN }}
- repository: "SteamDeckHomebrew/decky-loader"
+ repository: ${{ github.repository }}
type: "nodraft"
- name: Prepare tag ⚙️
@@ -115,42 +115,89 @@ jobs:
echo tag_name=v$OUT >> $GITHUB_OUTPUT
- name: Push tag 📤
- uses: rickstaa/action-create-tag@v1.3.2
+ uses: rickstaa/action-create-tag@v1.7.2
if: ${{ steps.ready_tag.outputs.tag_name && !env.ACT }}
with:
tag: ${{ steps.ready_tag.outputs.tag_name }}
message: Pre-release ${{ steps.ready_tag.outputs.tag_name }}
- build:
- name: Build tagged artifact
- uses: ./.github/workflows/build.yml
+ build_linux_x86_64:
+ name: Build tagged artifact (Linux, x86_64)
+ uses: ./.github/workflows/build-linux-x86_64.yml
+ needs: [create_tag]
+
+ build_linux_arm64:
+ name: Build tagged artifact (Linux, arm64)
+ uses: ./.github/workflows/build-linux-arm64.yml
+ needs: [create_tag]
+
+ build_win_x86_64:
+ name: Build tagged artifact (Windows, arm64)
+ uses: ./.github/workflows/build-win-arm64.yml
+ needs: [create_tag]
+
+ build_win_arm64:
+ name: Build tagged artifact (Windows, x86_64)
+ uses: ./.github/workflows/build-win-x86_64.yml
+ needs: [create_tag]
+
+ build_macos:
+ name: Build tagged artifact (macOS)
+ uses: ./.github/workflows/build-mac.yml
needs: [create_tag]
release:
- name: Release tagged artifact
- runs-on: ubuntu-22.04
- needs: [create_tag, build]
+ name: Release tagged artifacts
+ runs-on: ubuntu-26.04
+ needs: [create_tag, build_linux_x86_64, build_linux_arm64, build_win_x86_64, build_win_arm64, build_macos]
steps:
- - name: Fetch package artifact ⬇️
- uses: actions/download-artifact@v4
+ - name: Fetch package artifacts ⬇️
+ uses: actions/download-artifact@v8
with:
- name: PluginLoader
+ path: ./temp_artifacts
+
+ - name: Name release assets 🛠️
+ run: |
+ ARTIFACTS=("default" "arm64" "win" "win-noconsole" "win-arm64" "win-arm64-noconsole" "mac")
+
+ for artifact in "${ARTIFACTS[@]}"; do
+ echo "naming $artifact"
+
+ if [ "$artifact" = "default" ]; then
+ suffix=""
+ else
+ suffix="-$artifact"
+ fi
+
+ # stupid windows
+ if [[ "$artifact" == win* ]]; then
+ ext=".exe"
+ else
+ ext=""
+ fi
+
+ source="./temp_artifacts/PluginLoader$suffix"
+ dest="./PluginLoader$suffix$ext"
+ mv "$source"/PluginLoader$ext "$dest"
+ done
- name: Pre-release 📦
if: github.event.inputs.release == 'prerelease'
- uses: softprops/action-gh-release@v1
+ uses: softprops/action-gh-release@v3
with:
name: Prerelease ${{ needs.create_tag.outputs.tag_name }}
tag_name: ${{ needs.create_tag.outputs.tag_name }}
- files: ./PluginLoader
+ files: |
+ ./PluginLoade*
prerelease: true
generate_release_notes: true
- name: Release 📦
if: github.event.inputs.release == 'release'
- uses: softprops/action-gh-release@v1
+ uses: softprops/action-gh-release@v3
with:
name: Release ${{ needs.create_tag.outputs.tag_name }}
tag_name: ${{ needs.create_tag.outputs.tag_name }}
- files: ./PluginLoader
+ files: |
+ ./PluginLoade*
prerelease: false
generate_release_notes: true
diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml
index 86690aa0..113b3d30 100644
--- a/.github/workflows/typecheck.yml
+++ b/.github/workflows/typecheck.yml
@@ -10,17 +10,17 @@ jobs:
runs-on: ubuntu-22.04
steps:
- - uses: actions/checkout@v4 # Check out the repository first.
+ - uses: actions/checkout@v7 # Check out the repository first.
- - name: Set up NodeJS 20 💎
- uses: actions/setup-node@v4
+ - name: Set up NodeJS 26 💎
+ uses: actions/setup-node@v7
with:
- node-version: 20
+ node-version: 26
- - name: Set up Python 3.11.7 🐍
- uses: actions/setup-python@v5
+ - name: Set up Python 3.14.8 🐍
+ uses: actions/setup-python@v7
with:
- python-version: "3.11.7"
+ python-version: "3.14.8"
- name: Install Poetry
uses: snok/install-poetry@v1
@@ -40,7 +40,7 @@ jobs:
- name: Run pyright (Python)
uses: jakebailey/pyright-action@v1
with:
- python-version: "3.10.6"
+ python-version: "3.14.8"
no-comments: true
working-directory: backend