xworkmate-app/scripts/ci/github_release_upload.sh
2026-03-21 10:08:12 +08:00

30 lines
904 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
artifact_dir="${1:-release-artifacts}"
tag="${RELEASE_TAG:-manual-${GITHUB_RUN_NUMBER:-0}}"
title="${RELEASE_TITLE:-Manual Build ${GITHUB_RUN_NUMBER:-0}}"
notes="${RELEASE_NOTES:-Automated build}"
if ! command -v gh >/dev/null 2>&1; then
echo "GitHub CLI is required to upload release artifacts." >&2
exit 1
fi
if ! gh release view "$tag" --repo "${GITHUB_REPOSITORY}" >/dev/null 2>&1; then
gh release create "$tag" --repo "${GITHUB_REPOSITORY}" --title "$title" --notes "$notes"
else
gh release edit "$tag" --repo "${GITHUB_REPOSITORY}" --title "$title" --notes "$notes"
fi
mapfile -d '' files < <(find "$artifact_dir" -type f -print0)
if [[ "${#files[@]}" -eq 0 ]]; then
echo "No release artifacts found in $artifact_dir" >&2
exit 1
fi
for file in "${files[@]}"; do
gh release upload "$tag" "$file" --repo "${GITHUB_REPOSITORY}" --clobber
done