diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c9c4c7f..58e8284 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,6 +17,6 @@ jobs: - name: Install dependencies run: dotnet restore - name: Build - run: dotnet build --configuration Release --no-restore + run: dotnet build --no-restore # - name: Test # run: dotnet test --no-restore --verbosity normal diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index a554111..e740dd2 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -8,9 +8,7 @@ env: dotnet-version: 6.0.x python-version: 3.8 project: Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj - branch: main artifact: metashark - manifest: https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest.json jobs: build: @@ -25,8 +23,24 @@ jobs: uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.dotnet-version }} - - name: Restore nuget packages - run: dotnet restore ${{ env.project }} # 需要指定项目,要不然会同时build多个项目导致出错 + - name: Initialize workflow variables + id: vars + run: | + VERSION=$(echo "${GITHUB_REF#refs/*/}" | sed s/^v//) + VERSION="$VERSION.0" + echo ::set-output name=VERSION::${VERSION} + echo ::set-output name=APP_NAME::$(echo '${{ github.repository }}' | awk -F '/' '{print $2}') + - name: Install dependencies + run: dotnet restore ${{ env.project }} --no-cache + - name: Build + run: dotnet publish --nologo --no-restore --configuration=Release --framework=net6.0 --output=artifacts -p:Version=${{steps.vars.outputs.VERSION}} ${{ env.project }} + - name: Compress build files + uses: thedoctor0/zip-release@main + with: + type: "zip" + directory: "artifacts" + filename: "artifacts.zip" + exclusions: "*.json *.pdb" - name: Setup python uses: actions/setup-python@v2 with: @@ -34,25 +48,19 @@ jobs: - name: Install JPRM run: python -m pip install jprm - name: Run JPRM - run: chmod +x ./build_plugin.sh && ./build_plugin.sh ${{ env.artifact }} ${GITHUB_REF#refs/*/} - - name: Update release + run: chmod +x ./build_plugin.sh && ./build_plugin.sh ${{ env.artifact }} ${{steps.vars.outputs.VERSION}} ${GITHUB_REF#refs/*/} + - name: Publish release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ./artifacts/${{ env.artifact }}_*.zip + file: ./${{ env.artifact }}/${{ env.artifact }}_*.zip tag: ${{ github.ref }} file_glob: true - - name: Update manifest + - name: Publish manifest uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ./*.json + file: ./manifest*.json tag: "manifest" overwrite: true file_glob: true - # - name: Update manifest - # uses: stefanzweifel/git-auto-commit-action@v4 - # with: - # branch: ${{ env.branch }} - # commit_message: Update repo manifest - # file_pattern: "*.json" diff --git a/.gitignore b/.gitignore index 5001f37..bd8aba6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ obj/ .idea/ artifacts **/.DS_Store +metashark/ +manifest_cn.json +manifest.json \ No newline at end of file diff --git a/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj b/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj index b97455a..7e473a4 100644 --- a/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj +++ b/Jellyfin.Plugin.MetaShark.Test/Jellyfin.Plugin.MetaShark.Test.csproj @@ -1,23 +1,23 @@ - - - - net6.0 - enable - enable - - false - - - - - - - - - - - - - - - + + + + net6.0 + enable + enable + + false + + + + + + + + + + + + + + + diff --git a/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj b/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj index 24b3144..77d9b94 100644 --- a/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj +++ b/Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj @@ -8,23 +8,29 @@ enable AllEnabledByDefault ../jellyfin.ruleset + true False - true False - true - - + + runtime + + + runtime + + + runtime + diff --git a/README.md b/README.md index 15eb50d..f25daa2 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ jellyfin电影元数据插件,影片信息只要从豆瓣获取,并由TMDB ```sh $ dotnet restore -$ dotnet publish Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj +$ dotnet publish -c Release Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj ``` @@ -37,7 +37,7 @@ $ dotnet publish Jellyfin.Plugin.MetaShark/Jellyfin.Plugin.MetaShark.csproj 1. Build the plugin -2. Create a folder, like `metashark` and copy `bin/Release/Jellyfin.Plugin.MetaShark.dll` into it +2. Create a folder, like `metashark` and copy `bin/Release/net6.0/*.dll` into it 3. Move folder `metashark` to jellyfin `data/plugin` folder diff --git a/build.meta.json b/build.meta.json new file mode 100644 index 0000000..18d3898 --- /dev/null +++ b/build.meta.json @@ -0,0 +1,13 @@ +{ + "category": "Metadata", + "changelog": "NA", + "description": "jellyfin电影元数据插件,影片信息只要从豆瓣获取,并由TMDB补充缺失的季数据和剧集数据。", + "guid": "9a19103f-16f7-4668-be54-9a1e7a4f7556", + "imageUrl": "https://github.com/cxfksword/jellyfin-plugin-metashark/raw/main/doc/logo.png", + "name": "MetaShark", + "overview": "jellyfin电影元数据插件", + "owner": "cxfksword", + "targetAbi": "10.8.0.0", + "timestamp": "1970-01-01T00:00:00Z", + "version": "1.0.0.0" +} diff --git a/build.yaml b/build.yaml deleted file mode 100644 index b55df84..0000000 --- a/build.yaml +++ /dev/null @@ -1,15 +0,0 @@ -name: "MetaShark" -guid: "9A19103F-16F7-4668-BE54-9A1E7A4F7556" -imageUrl: https://github.com/cxfksword/jellyfin-plugin-metashark/raw/main/doc/logo.png -version: "1.0.0.0" -targetAbi: "10.8.0.0" -framework: "net6.0" -owner: "cxfksword" -overview: "jellyfin电影元数据插件" -description: > - jellyfin电影元数据插件,影片信息只要从豆瓣获取,并由TMDB补充缺失的季数据和剧集数据。 -category: "Metadata" -artifacts: - - "Jellyfin.Plugin.MetaShark.dll" -changelog: > - NA diff --git a/build_plugin.sh b/build_plugin.sh old mode 100644 new mode 100755 index 1929449..a4a65d0 --- a/build_plugin.sh +++ b/build_plugin.sh @@ -2,21 +2,18 @@ # $1 from github action ARTIFACT=$1 -TAG=$2 +VERSION=$2 +TAG=$3 +CURRENT_DATE=$(date +'%Y-%m-%dT%H:%M:%S') WORK_DIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P) -ARTIFACT_DIR="${WORK_DIR}/artifacts" -mkdir -p "${ARTIFACT_DIR}" +ARTIFACT_ZIP_FILE="${WORK_DIR}/artifacts/artifacts.zip" +ARTIFACT_META="${WORK_DIR}/build.meta.json" JELLYFIN_REPO_URL="https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download" JELLYFIN_MANIFEST="${WORK_DIR}/manifest.json" JELLYFIN_MANIFEST_CN="${WORK_DIR}/manifest_cn.json" JELLYFIN_MANIFEST_OLD="https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest.json" -BUILD_YAML_FILE="${WORK_DIR}/build.yaml" - - -VERSION=$(echo "$TAG" | sed s/^v//) # remove v prefix -VERSION="$VERSION.0" # .NET dll need major.minor[.build[.revision]] version format # download old manifest wget -q -O "$JELLYFIN_MANIFEST" "$JELLYFIN_MANIFEST_OLD" @@ -25,14 +22,16 @@ if [ $? -ne 0 ]; then jprm repo init $WORK_DIR fi -# update change log from tag message +# update meta json message +cp -f "${ARTIFACT_META}" "${ARTIFACT_ZIP_FILE}.meta.json" CHANGELOG=$(git tag -l --format='%(contents)' ${TAG}) -sed -i "s@NA@$CHANGELOG@" $BUILD_YAML_FILE # mac build need change to: -i '' +sed -i "s@NA@$CHANGELOG@" "${ARTIFACT_ZIP_FILE}.meta.json" +sed -i "s@1.0.0.0@$VERSION@" "${ARTIFACT_ZIP_FILE}.meta.json" +sed -i "s@1970-01-01T00:00:00Z@$CURRENT_DATE@" "${ARTIFACT_ZIP_FILE}.meta.json" -# build and generate new manifest -zipfile=$(jprm --verbosity=debug plugin build "." --output="${ARTIFACT_DIR}" --version="${VERSION}" --dotnet-framework="net6.0") && { - jprm --verbosity=debug repo add --url=${JELLYFIN_REPO_URL} "${JELLYFIN_MANIFEST}" "${zipfile}" -} + +# generate new manifest +jprm --verbosity=debug repo add --url=${JELLYFIN_REPO_URL} "${JELLYFIN_MANIFEST}" "${ARTIFACT_ZIP_FILE}" # fix menifest download url sed -i "s@/${ARTIFACT}@/$TAG@" "$JELLYFIN_MANIFEST"