* feat(release): add guarded prerelease and stable pipeline * feat(release): add guided dws-release entry (cherry picked from commit f7fa7b78f325f3574f0487862fc3e65bba5cdc96)
36 lines
994 B
Bash
Executable File
36 lines
994 B
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
TAG="${1:-}"
|
|
REPOSITORY="${GITHUB_REPOSITORY:-}"
|
|
|
|
[ -n "$TAG" ] && [ -n "$REPOSITORY" ] || {
|
|
printf 'usage: GITHUB_REPOSITORY=owner/repo verify-github-release-assets.sh <tag>\n' >&2
|
|
exit 2
|
|
}
|
|
command -v gh >/dev/null 2>&1 || { printf 'gh is required\n' >&2; exit 1; }
|
|
|
|
tmp="$(mktemp -d "${TMPDIR:-/tmp}/dws-github-assets.XXXXXX")"
|
|
trap 'rm -rf "$tmp"' EXIT HUP INT TERM
|
|
cat > "$tmp/expected" <<'EOF'
|
|
checksums.txt
|
|
dws-darwin-amd64.tar.gz
|
|
dws-darwin-arm64.tar.gz
|
|
dws-linux-amd64.tar.gz
|
|
dws-linux-arm64.tar.gz
|
|
dws-skills.zip
|
|
dws-windows-amd64.zip
|
|
dws-windows-arm64.zip
|
|
EOF
|
|
LC_ALL=C sort "$tmp/expected" -o "$tmp/expected"
|
|
|
|
gh api -H 'Accept: application/vnd.github+json' \
|
|
"repos/$REPOSITORY/releases/tags/$TAG" \
|
|
--jq '.assets[].name' | LC_ALL=C sort > "$tmp/actual"
|
|
if ! diff -u "$tmp/expected" "$tmp/actual"; then
|
|
printf 'GitHub Release %s must contain exactly the supported assets\n' "$TAG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
printf 'GitHub Release asset set verified: %s\n' "$TAG"
|