55 workflow_dispatch :
66 inputs :
77 release_tag :
8- description : ' Release tag to upload prebuilds to (e.g., v5.0.0 )'
8+ description : ' Release tag to upload prebuilds to (leave empty to use package.json version )'
99 required : false
1010 type : string
11- default : ' v5.0.0 '
11+ default : ' '
1212 create_release :
1313 description : " Create new release if it doesn't exist"
1414 required : false
@@ -228,23 +228,39 @@ jobs:
228228 echo "=== Workflow dispatch inputs ==="
229229 echo "Event name: ${{ github.event_name }}"
230230 echo "Release tag input: '${{ github.event.inputs.release_tag }}'"
231- echo "Will upload to release: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag != '' }}"
232231
233- # Upload to existing release when manually triggered with a release tag
234- - name : Upload to Existing Release
235- if : github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag != ''
232+ # Determine release tag (from input or package.json)
233+ - name : Determine Release Tag
234+ id : release_tag
235+ run : |
236+ if [ -n "${{ github.event.inputs.release_tag }}" ]; then
237+ RELEASE_TAG="${{ github.event.inputs.release_tag }}"
238+ echo "Using provided release tag: $RELEASE_TAG"
239+ else
240+ # Extract version from package.json and add 'v' prefix
241+ VERSION=$(node -p "require('./package.json').version")
242+ RELEASE_TAG="v${VERSION}"
243+ echo "Using package.json version: $RELEASE_TAG"
244+ fi
245+ echo "release_tag=$RELEASE_TAG" >> $GITHUB_OUTPUT
246+ echo "Final release tag: $RELEASE_TAG"
247+
248+ # Upload to existing release when manually triggered
249+ - name : Upload to Release
250+ if : github.event_name == 'workflow_dispatch'
236251 env :
237252 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
238253 run : |
239- echo "Uploading prebuilds to existing release: ${{ github.event.inputs.release_tag }}"
254+ RELEASE_TAG="${{ steps.release_tag.outputs.release_tag }}"
255+ echo "Uploading prebuilds to release: $RELEASE_TAG"
240256
241257 # Check if release exists
242258 echo "Checking if release exists..."
243- if gh release view "${{ github.event.inputs.release_tag }} " >/dev/null 2>&1; then
244- echo "Release ${{ github.event.inputs.release_tag }} exists"
259+ if gh release view "$RELEASE_TAG " >/dev/null 2>&1; then
260+ echo "Release $RELEASE_TAG exists"
245261 RELEASE_EXISTS=true
246262 else
247- echo "Release ${{ github.event.inputs.release_tag }} not found"
263+ echo "Release $RELEASE_TAG not found"
248264 RELEASE_EXISTS=false
249265 fi
250266
@@ -267,7 +283,7 @@ jobs:
267283 cd upload-staging
268284 for file in *.tar.gz; do
269285 echo "Uploading $file..."
270- gh release upload "${{ github.event.inputs.release_tag }} " "$file" --clobber
286+ gh release upload "$RELEASE_TAG " "$file" --clobber
271287 done
272288
273289 # Note: Auto-generated notes only work when creating new releases
@@ -277,16 +293,16 @@ jobs:
277293 # Create new release with auto-generated notes and upload files
278294 echo "Creating new release with auto-generated notes..."
279295 cd upload-staging
280- if gh release create "${{ github.event.inputs.release_tag }} " \
281- --title "Release ${{ github.event.inputs.release_tag }} " \
296+ if gh release create "$RELEASE_TAG " \
297+ --title "Release $RELEASE_TAG " \
282298 --generate-notes \
283299 *.tar.gz 2>/dev/null; then
284300 echo "Release created with auto-generated notes"
285301 else
286302 echo "Auto-generated notes not supported, creating release without notes..."
287- gh release create "${{ github.event.inputs.release_tag }} " \
288- --title "Release ${{ github.event.inputs.release_tag }} " \
289- --notes "Release ${{ github.event.inputs.release_tag }} " \
303+ gh release create "$RELEASE_TAG " \
304+ --title "Release $RELEASE_TAG " \
305+ --notes "Release $RELEASE_TAG " \
290306 *.tar.gz
291307 fi
292308 fi
@@ -302,21 +318,4 @@ jobs:
302318 echo ""
303319 echo "ℹ️ Alpine Linux (musl) prebuilds must be built manually:"
304320 echo " npx prebuild --target alpine"
305- echo " gh release upload ${{ github.event.inputs.release_tag }} *.tar.gz"
306-
307- # Create a draft release for testing (when no release tag specified)
308- - name : Create Draft Release with Prebuilds
309- if : github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag == ''
310- uses : softprops/action-gh-release@v1
311- with :
312- draft : true
313- tag_name : test-${{ github.run_number }}
314- name : Test Release ${{ github.run_number }}
315- files : prebuilds-artifacts/**/*.tar.gz
316- body : |
317- This is a test release created by workflow run #${{ github.run_number }}.
318-
319- ## Prebuilds included:
320- - Node.js versions: 20, 22, 23, 24
321- - Electron versions: 32, 33, 34, 35, 36
322- - Platforms: Windows, Linux, macOS
321+ echo " gh release upload $RELEASE_TAG *.tar.gz"
0 commit comments