fix: make the release workflow build and package a real Jellyfin plugin
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:
33
README.md
33
README.md
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user