Skip to content

Commit ddbd0ef

Browse files
authored
Merge pull request #88 from linksplatform/issue-81-b7913964
Fix: GitHub release workflows should not fail if release already exists
2 parents 0cf9de2 + 035faac commit ddbd0ef

File tree

3 files changed

+77
-2
lines changed

3 files changed

+77
-2
lines changed

.github/workflows/js.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,25 @@ jobs:
112112
uses: oven-sh/setup-bun@v1
113113
with:
114114
bun-version: latest
115-
- name: Read project information and publish release
115+
- name: Check if GitHub release already exists
116+
id: release-check
117+
run: |
118+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
119+
TAG_NAME="js_$PACKAGE_VERSION"
120+
echo "Checking if release $TAG_NAME already exists"
121+
122+
# Check if release exists
123+
if gh release view "$TAG_NAME" >/dev/null 2>&1; then
124+
echo "Release $TAG_NAME already exists"
125+
echo "should_create_release=false" >> $GITHUB_OUTPUT
126+
else
127+
echo "Release $TAG_NAME does not exist"
128+
echo "should_create_release=true" >> $GITHUB_OUTPUT
129+
fi
130+
env:
131+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132+
- name: Create GitHub release
133+
if: steps.release-check.outputs.should_create_release == 'true'
116134
run: |
117135
PACKAGE_VERSION=$(node -p "require('./package.json').version")
118136
PACKAGE_NAME=$(node -p "require('./package.json').name")

.github/workflows/rust.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,25 @@ jobs:
160160
toolchain: stable
161161
profile: minimal
162162
override: true
163-
- name: Read project information and publish release
163+
- name: Check if GitHub release already exists
164+
id: release-check
165+
run: |
166+
PACKAGE_VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
167+
TAG_NAME="rust_$PACKAGE_VERSION"
168+
echo "Checking if release $TAG_NAME already exists"
169+
170+
# Check if release exists
171+
if gh release view "$TAG_NAME" >/dev/null 2>&1; then
172+
echo "Release $TAG_NAME already exists"
173+
echo "should_create_release=false" >> $GITHUB_OUTPUT
174+
else
175+
echo "Release $TAG_NAME does not exist"
176+
echo "should_create_release=true" >> $GITHUB_OUTPUT
177+
fi
178+
env:
179+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
180+
- name: Create GitHub release
181+
if: steps.release-check.outputs.should_create_release == 'true'
164182
run: |
165183
PACKAGE_NAME=$(grep '^name = ' Cargo.toml | head -1 | sed 's/name = "\(.*\)"/\1/')
166184
PACKAGE_VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')

experiments/test_release_check.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
3+
# Test script to verify the release check logic
4+
# This simulates what the GitHub Actions workflows would do
5+
6+
echo "=== Testing JS release check logic ==="
7+
cd js
8+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
9+
TAG_NAME="js_$PACKAGE_VERSION"
10+
echo "Checking if release $TAG_NAME already exists"
11+
12+
if gh release view "$TAG_NAME" >/dev/null 2>&1; then
13+
echo "✅ Release $TAG_NAME already exists - would skip creation"
14+
SHOULD_CREATE_JS=false
15+
else
16+
echo "❌ Release $TAG_NAME does not exist - would create"
17+
SHOULD_CREATE_JS=true
18+
fi
19+
20+
echo
21+
echo "=== Testing Rust release check logic ==="
22+
cd ../rust
23+
PACKAGE_VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
24+
TAG_NAME="rust_$PACKAGE_VERSION"
25+
echo "Checking if release $TAG_NAME already exists"
26+
27+
if gh release view "$TAG_NAME" >/dev/null 2>&1; then
28+
echo "✅ Release $TAG_NAME already exists - would skip creation"
29+
SHOULD_CREATE_RUST=false
30+
else
31+
echo "❌ Release $TAG_NAME does not exist - would create"
32+
SHOULD_CREATE_RUST=true
33+
fi
34+
35+
echo
36+
echo "=== Summary ==="
37+
echo "JS release creation needed: $SHOULD_CREATE_JS"
38+
echo "Rust release creation needed: $SHOULD_CREATE_RUST"
39+
echo "Both workflows should now handle existing releases gracefully!"

0 commit comments

Comments
 (0)