Skip to content

v2026.601.2038.13

v2026.601.2038.13 #89

---
# This action is a candidate to centrally manage in https://github.com/<organization>/.github/
# If more Jellyfin plugins are developed, consider moving this action to the organization's .github repository,
# using the `jellyfin-plugin` repository label to identify repositories that should trigger have this workflow.
# Update Jellyfin repository on release events.
name: Update Jellyfin release
permissions: {}
on:
release:
types:
- released # this triggers when a release is published, but does not include pre-releases or drafts
concurrency:
group: "${{ github.workflow }}-${{ github.event.release.tag_name }}"
cancel-in-progress: false
jobs:
update-jellyfin-release:
if: >-
github.repository_owner == 'LizardByte' &&
!github.event.release.draft && !github.event.release.prerelease
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Check if Jellyfin repo
env:
TOPIC: jellyfin-plugin
id: check
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const topic = process.env.TOPIC;
console.log(`Checking if repo has topic: ${topic}`);
const repoTopics = await github.rest.repos.getAllTopics({
owner: context.repo.owner,
repo: context.repo.repo
});
console.log(`Repo topics: ${repoTopics.data.names}`);
const hasTopic = repoTopics.data.names.includes(topic);
console.log(`Has topic: ${hasTopic}`);
core.setOutput('hasTopic', hasTopic);
- name: Download release asset
id: download
if: >-
steps.check.outputs.hasTopic == 'true' &&
github.event.action != 'deleted'
uses: robinraju/release-downloader@28fc21f50d76778e7023361aa1f863e717d3d56f # v1.13
with:
repository: "${{ github.repository }}"
tag: "${{ github.event.release.tag_name }}"
fileName: "*.zip"
tarBall: false
zipBall: false
out-file-path: "release_downloads"
extract: false
- name: Loop through downloaded files
if: >-
steps.check.outputs.hasTopic == 'true' &&
github.event.action != 'deleted'
id: loop
run: |
files=$(echo '${{ steps.download.outputs.downloaded_files }}' | jq -r '.[]')
file_number=0
plugin=""
for file in ${files}; do
echo "${file}"
# extract the zip file
unzip -o "${file}" -d "./release_downloads/${file_number}"
# check if the extracted file contains a meta.json file
if [ -f "./release_downloads/${file_number}/meta.json" ]; then
plugin=${file}
break
fi
file_number=$((file_number+1))
done
if [ -z "${plugin}" ]; then
echo "No plugin found in the downloaded files"
exit 1
fi
echo "plugin_zip=${plugin}" >> "${GITHUB_OUTPUT}"
echo "found plugin: ${plugin}"
- name: Create/Update Jellyfin Release
if: >-
steps.check.outputs.hasTopic == 'true'
uses: LizardByte/jellyfin-plugin-repo@4310233d66615230dece9e3479ff3d5c9734c0a2 # v2026.417.125702
with:
action: ${{ github.event.action == 'deleted' && 'remove' || 'add' }}
github_token: ${{ secrets.GH_BOT_TOKEN }}
committer_email: ${{ secrets.GH_BOT_EMAIL }}
committer_name: ${{ vars.GH_BOT_NAME }}
release_tag: ${{ github.event.release.tag_name }}
zipfile: ${{ steps.loop.outputs.plugin_zip }}