Multi-target the plugin against net9.0 (Jellyfin 10.11.x) and net10.0 (Jellyfin 12.0.x), with per-framework Jellyfin.Controller/Model references. Jellyfin 12 added a controlling-session parameter to ISessionManager.ReportCapabilities; an empty value skips the AssertCanControl check, which is what a server-side registration needs. Each release now ships two packages, jellylms_<version>_jf11.zip and jellylms_<version>_jf12.zip, with a manifest entry each. Jellyfin filters by targetAbi, so both can share a version number. Also corrects the manifest targetAbi for new releases from 10.10.0.0 to 10.11.0.0 - the plugin has referenced 10.11 packages since 1.0.0. jprm only reads ./build.yaml, so build-plugin.sh swaps targetAbi/framework per variant and restores the file afterwards. The builder image moves to the .NET 10 SDK, which targets both frameworks. CA1873 (new in that SDK) is disabled alongside CA1848, same rationale. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
63 lines
1.7 KiB
YAML
63 lines
1.7 KiB
YAML
name: 'Build Plugin'
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: linux/amd64
|
|
container:
|
|
image: gitea.tourolle.paris/dtourolle/jellylms-builder:latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: build-${{ github.run_id }}
|
|
|
|
- name: Cache NuGet packages
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.nuget/packages
|
|
key: nuget-${{ hashFiles('**/Jellyfin.Plugin.JellyLMS.csproj') }}
|
|
restore-keys: nuget-
|
|
|
|
- name: Restore dependencies
|
|
working-directory: build-${{ github.run_id }}
|
|
run: dotnet restore Jellyfin.Plugin.JellyLMS.sln
|
|
|
|
- name: Build solution
|
|
working-directory: build-${{ github.run_id }}
|
|
run: dotnet build Jellyfin.Plugin.JellyLMS.sln --configuration Release --no-restore --no-self-contained /m:1
|
|
|
|
- name: Build Jellyfin plugin packages
|
|
working-directory: build-${{ github.run_id }}
|
|
run: |
|
|
for VARIANT in jf11 jf12; do
|
|
ARTIFACT=$(./build-plugin.sh "${VARIANT}")
|
|
cp "${ARTIFACT}" "artifacts/jellylms_latest_${VARIANT}.zip"
|
|
echo "Built ${VARIANT}: ${ARTIFACT}"
|
|
done
|
|
|
|
- name: Upload build artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: jellylms-plugin
|
|
path: build-${{ github.run_id }}/artifacts/jellylms_latest_*.zip
|
|
retention-days: 30
|
|
if-no-files-found: error
|
|
|
|
- name: Cleanup
|
|
if: always()
|
|
run: rm -rf build-${{ github.run_id }}
|