@@ -2,6 +2,12 @@ name: Release Native Binaries
22
33on :
44 workflow_dispatch :
5+ inputs :
6+ force_rebuild :
7+ description : Force rebuild and overwrite existing release
8+ required : false
9+ default : false
10+ type : boolean
511 workflow_call :
612
713permissions :
1521 name : Get Native Info
1622 runs-on : ubuntu-22.04
1723 outputs :
18- native_version : ${{ steps.read_package.outputs.native_version }}
19- release_exists : ${{ steps.release_exists .outputs.result }}
24+ native_version : ${{ steps.read_package.outputs.native_version }}
25+ should_build : ${{ steps.set_should_build .outputs.result }}
2026 steps :
2127 - uses : actions/checkout@v4
2228 - name : Read package.json
@@ -26,11 +32,13 @@ jobs:
2632 - name : Check Release Exists
2733 id : release_exists
2834 uses : actions/github-script@v8
35+ env :
36+ NATIVE_VERSION : ${{ steps.read_package.outputs.native_version }}
2937 with :
3038 result-encoding : string
3139 script : |
3240 try {
33- const tag = ' native-v${{ steps.read_package.outputs.native_version }}' ;
41+ const tag = ` native-v${process.env.NATIVE_VERSION}` ;
3442 const release = await github.rest.repos.getReleaseByTag({
3543 owner: context.repo.owner,
3644 repo: context.repo.repo,
@@ -40,12 +48,22 @@ jobs:
4048 } catch (error) {
4149 return false;
4250 }
51+ - name : Decide if should build
52+ id : set_should_build
53+ run : |
54+ if [ "${{ inputs.force_rebuild }}" = "true" ]; then
55+ echo "result=true" >> $GITHUB_OUTPUT
56+ elif [ "${{ steps.release_exists.outputs.result }}" = "false" ]; then
57+ echo "result=true" >> $GITHUB_OUTPUT
58+ else
59+ echo "result=false" >> $GITHUB_OUTPUT
60+ fi
4361
4462 build_binaries :
4563 name : Build Native Binaries
4664 runs-on : ${{ matrix.os }}
4765 needs : native_info
48- if : needs.native_info.outputs.release_exists == 'false '
66+ if : needs.native_info.outputs.should_build == 'true '
4967 strategy :
5068 fail-fast : true
5169 matrix :
8098 image : ${{ matrix.image }}
8199 steps :
82100 - name : Setup
83- run : ${{ matrix.setup }}
101+ run : ${{ matrix.setup }}
84102 - uses : actions/checkout@v4
85103 - name : Install Nodejs
86104 uses : actions/setup-node@v6
@@ -120,7 +138,7 @@ jobs:
120138 needs :
121139 - native_info
122140 - build_binaries
123- if : needs.native_info.outputs.release_exists == 'false ' && needs.build_binaries.result == 'success'
141+ if : needs.native_info.outputs.should_build == 'true ' && needs.build_binaries.result == 'success'
124142 steps :
125143 - name : Download All Built Artifacts
126144 uses : actions/download-artifact@v4
@@ -133,5 +151,6 @@ jobs:
133151 tag_name : native-v${{ needs.native_info.outputs.native_version }}
134152 name : " lua-state-native-v${{ needs.native_info.outputs.native_version }}-lua-v${{ env.LUA_VERSION }}"
135153 generate_release_notes : true
154+ overwrite_files : true
136155 fail_on_unmatched_files : true
137156 prerelease : true
0 commit comments