本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2024/10/11/auto-deploy-jellyfin-plugin/
Jellyfin自定义插件需要一个meta.json,内容大致如下
{
"category": "Metadata",
"guid": "a3a07da4-ae5a-4d4a-a843-5aa7e3ba0a62",
"name": "HappyMovie",
"description": "Get metadata from tmdb.",
"owner": "htynkn",
"overview": "Get metadata from tmdb.",
"targetAbi": "10.9.0.0",
"timestamp": "2024-10-10T13:46:00Z",
"version": "1.0.1.4"
}
其中targetAbi、timestamp、version字段是每个版本都不同的,其他部分可以写死。由于这些信息都可以从C#项目中获取,这里用py脚本来获取。
tree = ET.parse("Jellyfin.Plugin.HappyMovie/Jellyfin.Plugin.HappyMovie.csproj")
version = tree.find("./PropertyGroup/AssemblyVersion").text
targetAbi = tree.find("./ItemGroup/*[@Include='Jellyfin.Model']").attrib["Version"]
timestamp = datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
meta = {
"category": "Metadata",
"guid": "a3a07da4-ae5a-4d4a-a843-5aa7e3ba0a62",
"name": "HappyMovie",
"description": "Get metadata from tmdb.",
"owner": "htynkn",
"overview": "Get metadata from tmdb.",
"targetAbi": f"{targetAbi}.0",
"timestamp": timestamp,
"version": version
}
另外由于插件有外部依赖,需要拷贝dll到最终产出物中,脚本添加相关拷贝最后打包
subprocess.run([
"dotnet",
"build",
"Jellyfin.Plugin.HappyMovie/Jellyfin.Plugin.HappyMovie.csproj",
"--configuration",
"Release"
])
shutil.copy("Jellyfin.Plugin.HappyMovie/bin/Release/net8.0/Jellyfin.Plugin.HappyMovie.dll", f"release/{version}/")
shutil.copy(f"{Path.home()}/.nuget/packages/yove.proxy/1.1.1/lib/netstandard2.0/Yove.Proxy.dll", f"release/{version}/")
shutil.copy(f"{Path.home()}/.nuget/packages/tmdblib/2.2.0/lib/netstandard2.0/TMDbLib.dll", f"release/{version}/")
shutil.make_archive(f"release/happymovie_{version}", "zip", f"release/{version}/")
一般发布新版本的时候我们会打一个tag,可以基于这个特性驱动Github Action
name: release
on:
push:
tags:
- '*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 8.0.x
- name: Set up Python 3
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Execute build script
run: |
chmod +x ./package.py
./package.py
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref_name }}
draft: true
prerelease: false
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/happymovie_${{ github.ref_name }}.zip
asset_name: happymovie_${{ github.ref_name }}.zip
asset_content_type: application/zip
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2024/10/11/auto-deploy-jellyfin-plugin/