11name : Publish release files for CD native and non-cd-native environments
22
33on :
4- release :
5- types : [ created ]
6- # When a release failed, and there is something you need to fix in this
7- # YML file, you can manually re-run the job via this event to re-do the
8- # release. (Simply re-run the job through GitHub UI won't work as it would use
9- # the old YML file, which needs a fix.)
10- workflow_dispatch :
11- inputs :
12- # The GitHub Action (softprops/action-gh-release) used in this pipeline
13- # needs a tag, you specify it through this parameter.
14- #
15- # In the case described above, it should be an existing tag. E.g., the
16- # release of v16.0.4 failed, you should specify "v16.0.4" here.
17- existing_tag :
18- description : " The tag of the failed release that you wanna re-run and fix"
19- required : true
20- type : string
4+ repository_dispatch :
5+ types : [ release-created ]
216
227permissions :
238 contents : read
@@ -91,21 +76,11 @@ jobs:
9176 - name : Build in Release profile with all features enabled
9277 run : cargo build --release --all-features
9378
94- - name : Determine tag name
95- id : determine_tag_name
96- shell : bash # Or it won't work on Windows
97- run : |
98- if [ -n "${{ github.event.release.tag_name }}" ]; then
99- echo "tag_name=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
100- else
101- echo "tag_name=${{ github.event.inputs.existing_tag }}" >> $GITHUB_OUTPUT
102- fi
103-
10479 - name : Rename Release (Unix)
10580 run : |
10681 cargo install default-target
10782 mkdir -p assets
108- FILENAME=topgrade-${{ steps.determine_tag_name.outputs.tag_name }}-$(default-target)
83+ FILENAME=topgrade-${{ github.event.client_payload.tag }}-$(default-target)
10984 mv target/release/topgrade assets
11085 cd assets
11186 tar --format=ustar -czf $FILENAME.tar.gz topgrade
@@ -136,7 +111,7 @@ jobs:
136111 run : |
137112 cargo install default-target
138113 mkdir assets
139- FILENAME=topgrade-${{steps.determine_tag_name.outputs.tag_name }}-$(default-target)
114+ FILENAME=topgrade-${{ github.event.client_payload.tag }}-$(default-target)
140115 mv target/release/topgrade.exe assets/topgrade.exe
141116 cd assets
142117 powershell Compress-Archive -Path * -Destination ${FILENAME}.zip
@@ -145,12 +120,11 @@ jobs:
145120 if : ${{ matrix.platform == 'windows-latest' }}
146121 shell : bash
147122
148-
149- - name : Release
150- uses : softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
151- with :
152- tag_name : ${{ steps.determine_tag_name.outputs.tag_name }}
153- files : assets/*
123+ - name : Upload assets
124+ run :
125+ gh release upload "${{ github.event.client_payload.tag }}" assets/*
126+ env :
127+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
154128
155129 - name : Generate artifact attestations
156130@@ -250,20 +224,10 @@ jobs:
250224 - name : Build in Release profile with all features enabled
251225 run : cross build --release --all-features --target ${{matrix.target}}
252226
253- - name : Determine tag name
254- id : determine_tag_name
255- shell : bash # Or it won't work on Windows
256- run : |
257- if [ -n "${{ github.event.release.tag_name }}" ]; then
258- echo "tag_name=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
259- else
260- echo "tag_name=${{ github.event.inputs.existing_tag }}" >> $GITHUB_OUTPUT
261- fi
262-
263227 - name : Rename Release
264228 run : |
265229 mkdir -p assets
266- FILENAME=topgrade-${{steps.determine_tag_name.outputs.tag_name }}-${{matrix.target}}
230+ FILENAME=topgrade-${{ github.event.client_payload.tag }}-${{matrix.target}}
267231 mv target/${{matrix.target}}/release/topgrade assets
268232 cd assets
269233 tar --format=ustar -czf $FILENAME.tar.gz topgrade
@@ -289,13 +253,25 @@ jobs:
289253 shell : bash
290254
291255
292- - name : Release
293- uses : softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
294- with :
295- tag_name : ${{ steps.determine_tag_name.outputs.tag_name }}
296- files : assets/*
256+ - name : Upload assets
257+ run :
258+ gh release upload "${{ github.event.client_payload.tag }}" assets/*
259+ env :
260+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
297261
298262 - name : Generate artifact attestations
299263300264 with :
301265 subject-path : assets/*
266+
267+ triggers :
268+ runs-on : ubuntu-latest
269+ needs : [ native_build, cross_build ]
270+ steps :
271+ - name : Trigger workflows
272+ run : |
273+ gh api repos/${{ github.repository }}/dispatches \
274+ -f "event_type=release-assets-built" \
275+ -F "client_payload[tag]=${{ github.event.client_payload.tag }}"
276+ env :
277+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments