@@ -18,12 +18,33 @@ concurrency:
1818 cancel-in-progress : true
1919
2020jobs :
21+ setup_release :
22+ name : Setup Release
23+ outputs :
24+ publish_release : ${{ steps.setup_release.outputs.publish_release }}
25+ release_body : ${{ steps.setup_release.outputs.release_body }}
26+ release_commit : ${{ steps.setup_release.outputs.release_commit }}
27+ release_generate_release_notes : ${{ steps.setup_release.outputs.release_generate_release_notes }}
28+ release_tag : ${{ steps.setup_release.outputs.release_tag }}
29+ release_version : ${{ steps.setup_release.outputs.release_version }}
30+ runs-on : ubuntu-latest
31+ steps :
32+ - name : Checkout
33+ uses : actions/checkout@v4
34+
35+ - name : Setup Release
36+ id : setup_release
37+ uses : LizardByte/setup-release-action@v2024.725.234618
38+ with :
39+ github_token : ${{ secrets.GITHUB_TOKEN }}
40+
2141 build :
2242 strategy :
2343 fail-fast : false
2444 matrix :
2545 os : [ubuntu-latest, macos-latest, windows-latest]
2646 name : Build
47+ needs : [setup_release]
2748 runs-on : ${{ matrix.os }}
2849 defaults :
2950 run :
@@ -150,10 +171,17 @@ jobs:
150171 echo "python-path=${python_path}" >> $GITHUB_OUTPUT
151172
152173 - name : Build
174+ env :
175+ BRANCH : ${{ github.head_ref || github.ref_name }}
176+ BUILD_VERSION : ${{ needs.setup_release.outputs.release_tag }}
177+ COMMIT : ${{ needs.setup_release.outputs.release_commit }}
153178 run : |
154179 mkdir -p build
155180 cd build
156- cmake -DCMAKE_BUILD_TYPE:STRING=Debug -G Ninja ..
181+ cmake \
182+ -DCMAKE_BUILD_TYPE:STRING=Debug \
183+ -G Ninja \
184+ ..
157185 ninja
158186
159187 - name : Run tests
@@ -185,6 +213,21 @@ jobs:
185213 name : coverage-${{ matrix.os }}
186214 path : build/coverage.xml
187215
216+ - name : Move Artifacts
217+ run : |
218+ mkdir -p artifacts
219+ if ["${{ runner.os }}" == "Windows"]; then
220+ mv -f ./build/tests/test_libdisplaydevice.exe artifacts/
221+ else
222+ mv -f ./build/tests/test_libdisplaydevice artifacts/
223+ fi
224+
225+ - name : Upload Artifacts
226+ uses : actions/upload-artifact@v4
227+ with :
228+ name : build-${{ runner.os }}
229+ path : artifacts/
230+
188231 coverage :
189232 if : >-
190233 always() &&
@@ -222,3 +265,51 @@ jobs:
222265 flags : ${{ matrix.flag }}
223266 token : ${{ secrets.CODECOV_TOKEN }}
224267 verbose : true
268+
269+ release :
270+ if :
271+ always() &&
272+ needs.setup_release.outputs.publish_release == 'true' &&
273+ needs.build.result == 'success' &&
274+ startsWith(github.repository, 'LizardByte/')
275+ name : Release
276+ needs : [build, setup_release]
277+ runs-on : ubuntu-latest
278+ steps :
279+ - name : Download build artifact (Windows)
280+ uses : actions/download-artifact@v4
281+ with :
282+ name : build-Windows
283+ path : build-Windows
284+
285+ - name : Download build artifact (Linux)
286+ uses : actions/download-artifact@v4
287+ with :
288+ name : build-Linux
289+ path : build-Linux
290+
291+ - name : Download build artifact (macOS)
292+ uses : actions/download-artifact@v4
293+ with :
294+ name : build-macOS
295+ path : build-macOS
296+
297+ - name : Move artifacts
298+ run : |
299+ mkdir -p artifacts
300+ mv -f build-Windows/test_libdisplaydevice.exe artifacts/test_libdisplaydevice-Windows.exe
301+ mv -f build-Linux/test_libdisplaydevice artifacts/test_libdisplaydevice-Linux
302+ mv -f build-macOS/test_libdisplaydevice artifacts/test_libdisplaydevice-macOS
303+
304+ - name : Create/Update GitHub Release
305+ if : ${{ needs.setup_release.outputs.publish_release == 'true' }}
306+ uses : LizardByte/create-release-action@v2024.614.221009
307+ with :
308+ allowUpdates : true
309+ body : ${{ needs.setup_release.outputs.release_body }}
310+ discussionCategory : announcements
311+ generateReleaseNotes : ${{ needs.setup_release.outputs.release_generate_release_notes }}
312+ name : ${{ needs.setup_release.outputs.release_tag }}
313+ prerelease : true
314+ tag : ${{ needs.setup_release.outputs.release_tag }}
315+ token : ${{ secrets.GH_BOT_TOKEN }}
0 commit comments