fix: make the release workflow build and package a real Jellyfin plugin
All checks were successful
Build Plugin / build (push) Successful in 4m29s
Release Plugin / release (push) Successful in 1m7s

The release workflow was copied from another project and could not succeed on
any tag: it installed the .NET 8 SDK for a net9.0 project, published a
JellyfinSso.csproj that does not exist, called a missing update_manifest.py,
and zipped the entire publish tree instead of the three DLLs declared in
build.yaml.

Replace it with a tag-driven release:

- Build with the .NET 9 SDK, injecting the tag version via -p:Version,
  -p:AssemblyVersion and -p:FileVersion so the assembly no longer carries a
  hardcoded 1.0.3.0.
- Package via scripts/build_plugin.py, which emits the JPRM layout Jellyfin
  expects: the build.yaml artifacts plus a generated meta.json. The previous
  zips shipped without meta.json, which only worked for repository installs
  because Jellyfin synthesises one from the folder name.
- Update manifest.json via scripts/update_manifest.py, keeping build.yaml as
  the single source of truth for plugin metadata.
- Commit the zip and manifest to main and attach the zip to the Gitea release.
  Pushing uses the injected token, falling back to a RELEASE_TOKEN secret when
  the built-in one lacks write access.

Also fix the published download URLs. manifest.json and the README pointed at
pascallinxweiler/jellyfinplugin, which 404s; the repository is jellyfinsso, so
the plugin repository could not be added to Jellyfin and no version could be
downloaded. The workflow now derives the URL from GITHUB_REPOSITORY.

Add a build workflow so main and pull requests are compiled and packaged.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-29 15:18:40 +02:00
parent 10ea812a3c
commit 4b827941ee
8 changed files with 476 additions and 44 deletions

View File

@@ -11,17 +11,41 @@ Log in to Jellyfin with any OpenID Connect provider (Authelia, Authentik, Keyclo
## Build
Requires the .NET 9 SDK and `pyyaml`. The script compiles the plugin and packages
it the way Jellyfin expects — the DLLs listed in `build.yaml` plus a generated
`meta.json` — into `dist/oidc-auth_<version>.zip`:
```bash
dotnet publish Jellyfin.Plugin.OidcAuth --configuration Release --output artifacts
pip install pyyaml
python scripts/build_plugin.py
```
Pass `--version 1.0.4.0` to override the version in `build.yaml`.
## Release
Releases are cut by pushing an annotated tag; the tag message becomes the changelog:
```bash
git tag -a v1.0.4.0 -m "What changed in this release."
git push origin v1.0.4.0
```
`.gitea/workflows/release.yml` then builds the plugin at that tag, commits the zip
to `dist/` on `main` together with an updated `manifest.json`, and attaches the zip
to the Gitea release. Jellyfin picks the new version up from the repository URL below.
Pushing needs a token with write access. Gitea's built-in `GITHUB_TOKEN` is used by
default; if the repository does not grant it write access, add a PAT as the
`RELEASE_TOKEN` secret.
## Install via plugin repository (recommended)
1. In Jellyfin: Dashboard → Plugins → Repositories → **+**
2. Repository URL:
```
https://git.linxweiler.xyz/pascallinxweiler/jellyfinplugin/raw/branch/main/manifest.json
https://git.linxweiler.xyz/pascallinxweiler/jellyfinsso/raw/branch/main/manifest.json
```
3. Catalog → Authentication → **OIDC Auth** → Install → restart Jellyfin.
@@ -30,12 +54,13 @@ Updates show up in the catalog automatically when a new version is added to `man
## Install manually
Copy these files from `artifacts/` into a new folder in Jellyfin's plugin directory
(e.g. `config/plugins/OidcAuth/`), then restart Jellyfin:
Extract `dist/oidc-auth_<version>.zip` into a new folder in Jellyfin's plugin
directory (e.g. `config/plugins/OidcAuth/`), then restart Jellyfin. The zip holds:
- `Jellyfin.Plugin.OidcAuth.dll`
- `IdentityModel.OidcClient.dll`
- `IdentityModel.dll`
- `meta.json`
Requires Jellyfin 10.11.x.