30 lines
904 B
Bash
Executable File
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
|