mirror of
https://github.com/Felitendo/jellyfin-plugin-lyrics.git
synced 2026-11-01 17:23:25 +01:00
The Jellyfin 12 packages target net10.0 only, so one DLL cannot serve both server generations. A JellyfinTarget switch (jf10/jf12) selects the framework, the Jellyfin package version and a JF10/JF12 symbol. Each release produces both artifacts with the same plugin version and adds two manifest entries, Jellyfin 12 first. Jellyfin filters entries by targetAbi before its stable sort by version, so manifest order decides which build a Jellyfin 12 server picks. jprm repo add drops entries sharing a version, so scripts/update_manifest.py writes them. The 10.11 build is pinned to the 10.11.0 floor again, so the whole 10.11.x line can install it. CA1873 is relaxed for the .NET 10 analyzers, and CI builds both targets.
87 lines
3.1 KiB
YAML
87 lines
3.1 KiB
YAML
name: '🚀 Publish Plugin'
|
|
|
|
on:
|
|
release:
|
|
types:
|
|
- released
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
|
|
with:
|
|
ref: "master"
|
|
|
|
# Both SDKs: the Jellyfin 10.11 artifact is net9.0, the Jellyfin 12 one net10.0.
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4
|
|
with:
|
|
dotnet-version: |
|
|
9.0.x
|
|
10.0.x
|
|
|
|
# A managed Python rather than the runner's system one, which may refuse pip installs
|
|
# (PEP 668). The build scripts and jprm must share one interpreter for PyYAML.
|
|
- name: Setup Python
|
|
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
with:
|
|
python-version: '3.12'
|
|
|
|
- name: Setup jprm
|
|
run: python -m pip install jprm
|
|
|
|
# One artifact per Jellyfin line, same plugin version, different targetAbi.
|
|
- name: Build Jellyfin Plugin
|
|
id: build
|
|
run: python scripts/build_targets.py --output ./artifacts
|
|
|
|
- name: Upload Artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: build-artifact
|
|
retention-days: 30
|
|
if-no-files-found: error
|
|
path: ./artifacts/*.zip
|
|
|
|
- name: Upload Jellyfin 12 build to Release
|
|
id: release_jf12
|
|
if: ${{ github.event_name == 'release' }}
|
|
uses: shogo82148/actions-upload-release-asset@dccd6d23e64fd6a746dce6814c0bde0a04886085 # v1.7.2
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
overwrite: true
|
|
asset_path: ${{ steps.build.outputs.jf12_artifact }}
|
|
|
|
- name: Upload Jellyfin 10.11 build to Release
|
|
id: release_jf10
|
|
if: ${{ github.event_name == 'release' }}
|
|
uses: shogo82148/actions-upload-release-asset@dccd6d23e64fd6a746dce6814c0bde0a04886085 # v1.7.2
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
overwrite: true
|
|
asset_path: ${{ steps.build.outputs.jf10_artifact }}
|
|
|
|
# Not `jprm repo add`: it drops any existing entry whose version matches the one being
|
|
# added, so it cannot write the two entries this release needs. See the script.
|
|
- name: Update manifest
|
|
if: ${{ github.event_name == 'release' }}
|
|
run: |
|
|
python scripts/update_manifest.py \
|
|
--jf12-zip "${{ steps.build.outputs.jf12_artifact }}" \
|
|
--jf12-url "${{ steps.release_jf12.outputs.browser_download_url }}" \
|
|
--jf10-zip "${{ steps.build.outputs.jf10_artifact }}" \
|
|
--jf10-url "${{ steps.release_jf10.outputs.browser_download_url }}"
|
|
|
|
- name: Commit manifest
|
|
if: ${{ github.event_name == 'release' }}
|
|
run: |
|
|
git config user.name jellyfin-bot
|
|
git config user.email team@jellyfin.org
|
|
git pull
|
|
git add ./manifest.json
|
|
git diff --cached --quiet || git commit -m "Update manifest.json"
|
|
git push origin master
|