Gitea has no per-release visibility override -- a repo is public or private for everything (raw files, releases, API), confirmed against Gitea's own docs/issue tracker. So manifest.json and release zips now publish to a dedicated public repo (JellyfinSyncPlus-repo) via Gitea's Contents API, while this source repo stays private. The v0.2.0.0 release already pushed under the old (source-repo-only) version of this pipeline is now stale; the next tag will publish correctly under the new split. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
54 lines
2.2 KiB
Bash
Executable File
54 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Builds and packages a tagged release. Used by .github/workflows/release.yml; safe to
|
|
# run locally too for a dry run. Does NOT touch manifest.json -- that's published
|
|
# separately to the public distribution repo by dev/publish-manifest.sh, since the zip
|
|
# this produces gets uploaded there too (release assets on a private repo can't be made
|
|
# public on their own in Gitea; see PLAN.md "Release distribution").
|
|
#
|
|
# Required env vars:
|
|
# VERSION -- e.g. 0.2.0.0 (must match build.yaml's version)
|
|
# SERVER_URL -- e.g. https://gitea.mrcynic.site
|
|
# PUBLIC_REPO_OWNER -- Gitea org/user the *public* distribution repo lives under
|
|
# PUBLIC_REPO_NAME -- the public distribution repo's name (holds releases + manifest.json)
|
|
set -euo pipefail
|
|
|
|
: "${VERSION:?VERSION env var required, e.g. 0.2.0.0}"
|
|
: "${SERVER_URL:?SERVER_URL env var required, e.g. https://gitea.mrcynic.site}"
|
|
: "${PUBLIC_REPO_OWNER:?PUBLIC_REPO_OWNER env var required}"
|
|
: "${PUBLIC_REPO_NAME:?PUBLIC_REPO_NAME env var required}"
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
echo "Building Release configuration..."
|
|
dotnet build src/JellyfinSyncPlus/JellyfinSyncPlus.csproj -c Release
|
|
|
|
BUILD_VERSION=$(grep -oP '(?<=^version: ")[^"]*' build.yaml)
|
|
if [ "$BUILD_VERSION" != "$VERSION" ]; then
|
|
echo "ERROR: build.yaml version ($BUILD_VERSION) does not match requested VERSION ($VERSION)." >&2
|
|
echo "Update build.yaml's version field to match the git tag before releasing." >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p release
|
|
ZIP_NAME="JellyfinSyncPlus_${VERSION}.zip"
|
|
ZIP_PATH="release/${ZIP_NAME}"
|
|
rm -f "$ZIP_PATH"
|
|
(cd src/JellyfinSyncPlus/bin/Release/net9.0 && zip -j "$ROOT/$ZIP_PATH" JellyfinSyncPlus.dll)
|
|
|
|
CHECKSUM=$(md5sum "$ZIP_PATH" | awk '{print $1}')
|
|
SOURCE_URL="${SERVER_URL}/${PUBLIC_REPO_OWNER}/${PUBLIC_REPO_NAME}/releases/download/v${VERSION}/${ZIP_NAME}"
|
|
|
|
echo "Packaged $ZIP_PATH"
|
|
echo "Checksum: $CHECKSUM"
|
|
echo "Source URL: $SOURCE_URL"
|
|
|
|
# For the next workflow step to pick up without re-deriving them (no-op outside CI).
|
|
if [ -n "${GITHUB_OUTPUT:-}" ]; then
|
|
{
|
|
echo "CHECKSUM=${CHECKSUM}"
|
|
echo "SOURCE_URL=${SOURCE_URL}"
|
|
echo "ZIP_PATH=${ZIP_PATH}"
|
|
} >> "$GITHUB_OUTPUT"
|
|
fi
|