49 lines
1.8 KiB
Bash
Executable file
49 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Publish one release asset through stoke, creating the release when needed.
|
|
#
|
|
# Usage: publish-release.sh <tag> <version> <deb> <owner> <repo>
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
TAG="${1:?usage: publish-release.sh <tag> <version> <deb> <owner> <repo>}"
|
|
VERSION="${2:?usage: publish-release.sh <tag> <version> <deb> <owner> <repo>}"
|
|
DEB="${3:?usage: publish-release.sh <tag> <version> <deb> <owner> <repo>}"
|
|
OWNER="${4:?usage: publish-release.sh <tag> <version> <deb> <owner> <repo>}"
|
|
REPO="${5:?usage: publish-release.sh <tag> <version> <deb> <owner> <repo>}"
|
|
FORGE_URL="${FORGE_URL:-${GITHUB_SERVER_URL:?GITHUB_SERVER_URL or FORGE_URL is required}}"
|
|
RELEASE_TOKEN="${RELEASE_TOKEN:?RELEASE_TOKEN is required}"
|
|
|
|
[ -f "$DEB" ] || { echo "publish-release: no such asset: $DEB" >&2; exit 1; }
|
|
|
|
if [ -n "${RUNNER_TEMP:-}" ]; then
|
|
TMP="$(mktemp -d "$RUNNER_TEMP/stoke-release.XXXXXX")"
|
|
else
|
|
TMP="$(mktemp -d)"
|
|
fi
|
|
trap 'rm -rf "$TMP"' EXIT
|
|
|
|
TOKEN_FILE="$TMP/token"
|
|
CONFIG_FILE="$TMP/config.json"
|
|
NOTES_FILE="$TMP/notes.md"
|
|
umask 077
|
|
printf '%s' "$RELEASE_TOKEN" > "$TOKEN_FILE"
|
|
chmod 0600 "$TOKEN_FILE"
|
|
|
|
run_stoke() {
|
|
if [ -n "${STOKE:-}" ]; then
|
|
"$STOKE" --config "$CONFIG_FILE" "$@"
|
|
else
|
|
node "$ROOT/src/cli.js" --config "$CONFIG_FILE" "$@"
|
|
fi
|
|
}
|
|
|
|
run_stoke auth login --url "$FORGE_URL" --token-file "$TOKEN_FILE"
|
|
"$ROOT/scripts/changelog-section.sh" "$VERSION" CHANGELOG.md > "$NOTES_FILE"
|
|
|
|
if run_stoke release view --owner "$OWNER" --repo "$REPO" --tag "$TAG" --json >/dev/null 2>&1; then
|
|
run_stoke release upload --owner "$OWNER" --repo "$REPO" --tag "$TAG" --asset "$DEB"
|
|
else
|
|
run_stoke release create --owner "$OWNER" --repo "$REPO" --tag "$TAG" \
|
|
--title "$TAG" --body-file "$NOTES_FILE" --asset "$DEB"
|
|
fi
|