Skip to content

Commit ff1f6c5

Browse files
committed
chore: added handling of draft releases
1 parent f844a3d commit ff1f6c5

2 files changed

Lines changed: 11 additions & 14 deletions

File tree

.github/scripts/release/resolve-version-ref.sh

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
set -euo pipefail
44

55
# Script to resolve the release version and target ref from a
6-
# workflow_dispatch input by looking up the existing draft release.
6+
# workflow_dispatch input by looking up the existing release.
7+
# Works for both draft and published releases so an existing release
8+
# can be rebuilt and clobbered with new assets.
79
#
810
# Usage: resolve-version-ref.sh
911
# Environment variables:
@@ -20,18 +22,11 @@ function main {
2022

2123
# Look up the release to get target_commitish
2224
local release_json
23-
if ! release_json=$(gh release view "$version" --json 'isDraft,targetCommitish' 2>/dev/null); then
25+
if ! release_json=$(gh release view "$version" --json 'targetCommitish' 2>/dev/null); then
2426
echo "ERROR: No release found for version $version" >&2
2527
exit 1
2628
fi
2729

28-
local is_draft
29-
is_draft=$(jq -r '.isDraft' <<<"$release_json")
30-
if [[ "$is_draft" != "true" ]]; then
31-
echo "ERROR: Release $version is already published. Cannot rebuild a published release." >&2
32-
exit 1
33-
fi
34-
3530
local ref
3631
ref=$(jq -r '.targetCommitish' <<<"$release_json")
3732

.github/scripts/release/tests/resolve-version-ref.bats

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ teardown() {
2727

2828
run "$SCRIPT"
2929
[ "$status" -eq 0 ]
30-
grep -q "^version=v1.2.3$" "$GITHUB_OUTPUT"
30+
grep -q "^version=${INPUT_VERSION}$" "$GITHUB_OUTPUT"
3131
grep -q "^ref=${sha}$" "$GITHUB_OUTPUT"
3232
}
3333

@@ -40,12 +40,14 @@ teardown() {
4040
[[ "$output" == *"No release found"* ]]
4141
}
4242

43-
@test "errors if release is already published" {
44-
export GH_STUB_RESPONSE='{"isDraft":false,"targetCommitish":"a1b2c3d4e5f6789012345678901234567890abcd"}'
43+
@test "resolves published release to version + ref" {
44+
local sha="a1b2c3d4e5f6789012345678901234567890abcd"
45+
export GH_STUB_RESPONSE="{\"targetCommitish\":\"${sha}\"}"
4546

4647
run "$SCRIPT"
47-
[ "$status" -ne 0 ]
48-
[[ "$output" == *"already published"* ]]
48+
[ "$status" -eq 0 ]
49+
grep -q "^version=${INPUT_VERSION}$" "$GITHUB_OUTPUT"
50+
grep -q "^ref=${sha}$" "$GITHUB_OUTPUT"
4951
}
5052

5153
@test "fails when INPUT_VERSION missing" {

0 commit comments

Comments
 (0)