Prepare release engine
This commit is contained in:
+10
-13
@@ -3,9 +3,9 @@
|
||||
#
|
||||
# bin/release-check.sh [version] default: Plugin::VERSION
|
||||
#
|
||||
# Fails unless releases/latest is that version, ZIP and .sig are public downloads below the repository's release
|
||||
# URL (the only place GiteaUpdater accepts a package from), and the downloaded ZIP passes the signature check against
|
||||
# the key built into the plugin.
|
||||
# Fails unless releases/latest is that version, the ZIP is a public download below the repository's release URL (the
|
||||
# only place GiteaUpdater accepts a package from), and the downloaded ZIP is the plugin in that version with its
|
||||
# autoloader.
|
||||
#
|
||||
# Environment: LIT_MCP_GITEA (default https://git.loosen-it.de), only to try the script against another server.
|
||||
set -euo pipefail
|
||||
@@ -25,18 +25,15 @@ latest="$(curl -fsS "$gitea/api/v1/repos/$repo/releases/latest")" \
|
||||
tag="$(jq -r .tag_name <<<"$latest")"
|
||||
[[ "$tag" == "v$version" ]] || fail "releases/latest liefert '$tag', erwartet v$version"
|
||||
|
||||
asset_url() { jq -r --arg n "$1" '.assets[] | select(.name == $n) | .browser_download_url' <<<"$latest"; }
|
||||
zip_url="$(asset_url "$name")"
|
||||
sig_url="$(asset_url "$name.sig")"
|
||||
for url in "$zip_url" "$sig_url"; do
|
||||
[[ "$url" == "$gitea/$repo/releases/download/"* ]] || fail "Asset-URL fehlt oder liegt woanders: '$url'"
|
||||
done
|
||||
zip_url="$(jq -r --arg n "$name" '.assets[] | select(.name == $n) | .browser_download_url' <<<"$latest")"
|
||||
[[ "$zip_url" == "$gitea/$repo/releases/download/"* ]] || fail "Asset-URL fehlt oder liegt woanders: '$zip_url'"
|
||||
|
||||
work="$(mktemp -d)"
|
||||
trap 'rm -rf "$work"' EXIT
|
||||
curl -fsSL "$zip_url" -o "$work/$name" || fail "ZIP nicht ohne Anmeldung ladbar: $zip_url"
|
||||
curl -fsSL "$sig_url" -o "$work/$name.sig" || fail "Signatur nicht ohne Anmeldung ladbar: $sig_url"
|
||||
php bin/release-sign.php verify "$work/$name" "$work/$name.sig" >/dev/null \
|
||||
|| fail "Das heruntergeladene Release besteht die Signaturprüfung nicht"
|
||||
entries="$(bsdtar -tf "$work/$name")" || fail "Das heruntergeladene ZIP ist kein gültiges ZIP"
|
||||
grep -qx 'wp-lit-mcp/vendor/autoload_packages.php' <<<"$entries" || fail "Im ZIP fehlt der Autoloader (vendor/)"
|
||||
[[ "$(bsdtar -xOf "$work/$name" wp-lit-mcp/wp-lit-mcp.php | sed -n 's/^ \* Version: //p')" == "$version" ]] \
|
||||
|| fail "Das ZIP enthält nicht Version $version"
|
||||
|
||||
echo "Release v$version in Ordnung: öffentlich ladbar, Signatur gültig"
|
||||
echo "Release v$version in Ordnung: öffentlich ladbar, Plugin und Autoloader im ZIP"
|
||||
|
||||
Reference in New Issue
Block a user