@@ -199,372 +199,3 @@ jobs:
199199 cmake -B build_static_analysis --preset=ci-build-linux-no-pch .
200200 python3 scripts/run_static_analysis.py --build-path build_static_analysis --clang-tidy
201201 rm -rf build_static_analysis
202- - name : Upload installer
203- uses : actions/upload-artifact@v4
204- with :
205- name : swiftinstaller-linux-64-${{ needs.preBuild.outputs.version }}
206- path : ${{ github.workspace }}/swiftinstaller-*
207- - name : Upload symbols
208- uses : actions/upload-artifact@v4
209- if : ${{ env.do_symbols == 'true' }}
210- with :
211- name : swiftsymbols-linux-64-${{ needs.preBuild.outputs.version }}
212- path : ${{ github.workspace }}/swiftsymbols-*
213- - name : Upload xswiftbus
214- uses : actions/upload-artifact@v4
215- with :
216- name : xswiftbus-thin-linux-64-${{ needs.preBuild.outputs.version }}
217- path : ${{ github.workspace }}/xswiftbus-*
218-
219- buildWin64 :
220- runs-on : windows-2022
221- needs : [preBuild, checks]
222- env :
223- BACKTRACE_SYMBOL_TOKEN : ${{ secrets.BACKTRACE_SYMBOL_TOKEN }}
224- BACKTRACE_MINIDUMP_TOKEN : ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }}
225- BITROCK_BUILDER : " ~/installbuilder/bin/builder-cli.exe"
226-
227- steps :
228- - name : Install Qt
229- uses : jurplel/install-qt-action@v4
230- with :
231- version : ${{ env.qt_version }}
232- modules : ' qtmultimedia'
233- arch : win64_msvc2022_64
234- cache : true
235- - name : Install Qt debug info
236- uses : jurplel/install-qt-action@v4
237- with :
238- version : ${{ env.qt_version }}
239- arch : win64_msvc2022_64
240- cache : true
241- modules : debug_info
242- extra : --archives qtbase
243- - name : Cache InstallBuilder
244- id : cache-bitrock
245- uses : actions/cache@v4
246- with :
247- path : C:\installbuilder.exe
248- key : installbuilder-${{ env.bitrock_version }}-windows-x64
249- - name : Download InstallBuilder
250- if : steps.cache-bitrock.outputs.cache-hit != 'true'
251- shell : C:\msys64\usr\bin\bash.exe -le {0}
252- run : |
253- wget --retry-connrefused -t 10 -w 10 -T 60 -O /c/installbuilder.exe ${{ env.bitrock_url }}/installbuilder-${{ env.bitrock_version }}-windows-x64-installer.exe
254- env :
255- MSYSTEM : MSYS2
256- - name : Install InstallBuilder
257- run : |
258- start -wait "C:\installbuilder.exe" @("--mode", "unattended", "--prefix", "$HOME\installbuilder")
259- echo >$HOME\license.xml @"
260- $env:BITROCK_LICENSE
261- "@
262- env :
263- BITROCK_LICENSE : ${{ secrets.BITROCK_LICENSE }}
264- - name : Install dependencies
265- run : |
266- pip install requests PyInstaller conan
267- - name : Checkout repository
268- uses : actions/checkout@v4
269- with :
270- submodules : true
271- fetch-depth : 0
272- - name : Checkout externals
273- if : ${{ env.use_externals == 'true' }}
274- uses : actions/checkout@v4
275- env :
276- EXTERNALS_PAT : ${{ secrets.EXTERNALS_PAT }}
277- with :
278- repository : ${{ env.externals }}
279- ref : ${{ env.externals_sha }}
280- token : ${{ env.EXTERNALS_PAT }}
281- path : ' third_party/externals'
282- - name : Install conan dependencies
283- shell : bash
284- env :
285- ARTIFACTORY_USER : ${{ secrets.ARTIFACTORY_USER }}
286- ARTIFACTORY_TOKEN : ${{ secrets.ARTIFACTORY_TOKEN }}
287- run : |
288- conan profile detect
289- conan remote disable conancenter
290- conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local
291- conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN"
292- conan install . --output-folder=build_conan --deployer=full_deploy -pr=ci/profile_win
293- - name : Create Vatsim key file
294- if : ${{ env.do_vatsim_key == 'true' }}
295- run : |
296- echo >vatsim.json @"
297- { "vatsim": { "id": "$env:VATSIM_ID", "key": "$env:VATSIM_KEY" } }
298- "@
299- env :
300- VATSIM_ID : ${{ secrets.VATSIM_ID }}
301- VATSIM_KEY : ${{ secrets.VATSIM_KEY }}
302- - uses : Trass3r/setup-cpp@1b63900ecf3f0b7c60ee53aa7be122f2c4fe7a2c
303- - name : Build swift (without symbols)
304- if : ${{ env.do_symbols != 'true' }}
305- shell : cmd
306- run : |
307- build_conan\\build\\RelWithDebInfo\\generators\\conanrun.bat && python -u scripts/build.py -w 64 -t msvc
308- - name : Build swift (with symbols)
309- if : ${{ env.do_symbols == 'true' }}
310- shell : cmd
311- run : |
312- build_conan\\build\\RelWithDebInfo\\generators\\conanrun.bat && python -u scripts/build.py -w 64 -t msvc --upload-symbols
313- - name : Upload installer
314- uses : actions/upload-artifact@v4
315- with :
316- name : swiftinstaller-windows-64-${{ needs.preBuild.outputs.version }}
317- path : ${{ github.workspace }}/swiftinstaller-*
318- - name : Upload symbols
319- uses : actions/upload-artifact@v4
320- if : ${{ env.do_symbols == 'true' }}
321- with :
322- name : swiftsymbols-windows-64-${{ needs.preBuild.outputs.version }}
323- path : ${{ github.workspace }}/swiftsymbols-*
324- - name : Upload xswiftbus
325- uses : actions/upload-artifact@v4
326- with :
327- name : xswiftbus-thin-windows-64-${{ needs.preBuild.outputs.version }}
328- path : ${{ github.workspace }}/xswiftbus-*
329-
330- buildMacOS :
331- runs-on : macos-13
332- needs : [preBuild, checks]
333- env :
334- BACKTRACE_SYMBOL_TOKEN : ${{ secrets.BACKTRACE_SYMBOL_TOKEN }}
335- BACKTRACE_MINIDUMP_TOKEN : ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }}
336- BITROCK_BUILDER : /Applications/installbuilder/bin/Builder.app/Contents/MacOS/installbuilder.sh
337-
338- steps :
339- - name : Install Qt
340- uses : jurplel/install-qt-action@v4
341- with :
342- version : ${{ env.qt_version }}
343- modules : ' qtmultimedia'
344- cache : true
345- - name : Cache InstallBuilder
346- id : cache-bitrock
347- uses : actions/cache@v4
348- with :
349- path : ~/installbuilder.dmg
350- key : installbuilder-${{ env.bitrock_version }}-osx
351- - name : Download InstallBuilder
352- if : steps.cache-bitrock.outputs.cache-hit != 'true'
353- run : |
354- wget --retry-connrefused -t 10 -w 10 -T 60 -O $HOME/installbuilder.dmg ${{ env.bitrock_url }}/installbuilder-${{ env.bitrock_version }}-osx-installer.dmg
355- - name : Install InstallBuilder
356- run : |
357- chmod 700 $HOME/installbuilder.dmg
358- sudo hdiutil attach $HOME/installbuilder.dmg
359- sudo cp -rf "/Volumes/InstallBuilder Qt/installbuilder-${{ env.bitrock_version }}-osx-installer.app" /Applications
360- sudo hdiutil detach "/Volumes/InstallBuilder Qt"
361- sudo spctl --master-disable
362- sudo chmod -R +x /Applications/installbuilder-${{ env.bitrock_version }}-osx-installer.app
363- sudo xattr -r -d com.apple.quarantine /Applications/installbuilder-${{ env.bitrock_version }}-osx-installer.app
364- sudo /Applications/installbuilder-${{ env.bitrock_version }}-osx-installer.app/Contents/MacOs/installbuilder.sh --mode unattended --prefix /Applications/installbuilder
365- cat >~/license.xml <<EOF
366- $BITROCK_LICENSE
367- EOF
368- env :
369- BITROCK_LICENSE : ${{ secrets.BITROCK_LICENSE }}
370- - name : Install dependencies
371- run : |
372- pip3 install requests conan
373- - name : Checkout repository
374- uses : actions/checkout@v4
375- with :
376- submodules : true
377- fetch-depth : 0
378- - name : Checkout externals
379- if : ${{ env.use_externals == 'true' }}
380- uses : actions/checkout@v4
381- env :
382- EXTERNALS_PAT : ${{ secrets.EXTERNALS_PAT }}
383- with :
384- repository : ${{ env.externals }}
385- ref : ${{ env.externals_sha }}
386- token : ${{ env.EXTERNALS_PAT }}
387- path : ' third_party/externals'
388- - name : Install conan dependencies
389- shell : bash
390- env :
391- ARTIFACTORY_USER : ${{ secrets.ARTIFACTORY_USER }}
392- ARTIFACTORY_TOKEN : ${{ secrets.ARTIFACTORY_TOKEN }}
393- run : |
394- # Empty presets to avoid autogenerated config from Conan
395- echo "{\"version\": 6}" > CMakeUserPresets.json
396- conan profile detect
397- conan remote disable conancenter
398- conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local
399- conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN"
400- conan install . --output-folder=build_conan --deployer=full_deploy -pr=ci/profile_mac
401- conan install . --output-folder=build_conan_arm --deployer=full_deploy -pr=ci/profile_mac_arm
402- # https://doc.qt.io/qt-6/macos-issues.html#d-bus-and-macos
403- conan install --requires=dbus/1.15.8 --output-folder build_conan_dbus_shared --deployer=full_deploy -o "dbus/*:shared=True" -o "dbus/*:message_bus=True" -pr=ci/profile_mac
404- - name : Create Vatsim key file
405- if : ${{ env.do_vatsim_key == 'true' }}
406- run : |
407- cat >vatsim.json <<EOF
408- { "vatsim": { "id": "$VATSIM_ID", "key": "$VATSIM_KEY" } }
409- EOF
410- env :
411- VATSIM_ID : ${{ secrets.VATSIM_ID }}
412- VATSIM_KEY : ${{ secrets.VATSIM_KEY }}
413- - uses : Trass3r/setup-cpp@1b63900ecf3f0b7c60ee53aa7be122f2c4fe7a2c
414- - name : Build swift (without symbols)
415- if : ${{ env.do_symbols != 'true' }}
416- run : |
417- python3 -u scripts/build.py -w 64 -t clang
418- - name : Build swift (with symbols)
419- if : ${{ env.do_symbols == 'true' }}
420- run : |
421- python3 -u scripts/build.py -w 64 -t clang --upload-symbols
422- - name : Upload installer
423- uses : actions/upload-artifact@v4
424- with :
425- name : swiftinstaller-macos-64-${{ needs.preBuild.outputs.version }}
426- path : ${{ github.workspace }}/swiftinstaller-*
427- - name : Upload symbols
428- uses : actions/upload-artifact@v4
429- if : ${{ env.do_symbols == 'true' }}
430- with :
431- name : swiftsymbols-macos-64-${{ needs.preBuild.outputs.version }}
432- path : ${{ github.workspace }}/swiftsymbols-*
433- - name : Upload xswiftbus
434- uses : actions/upload-artifact@v4
435- with :
436- name : xswiftbus-thin-macos-64-${{ needs.preBuild.outputs.version }}
437- path : ${{ github.workspace }}/xswiftbus-*
438-
439- postBuild :
440- runs-on : ubuntu-22.04
441- needs : [preBuild, checks, buildLinux, buildWin64, buildMacOS]
442-
443- steps :
444- - name : Download xswiftbus-thin
445- uses : actions/download-artifact@v4
446- with :
447- pattern : xswiftbus-thin-*
448- merge-multiple : true
449- - name : Repackage xswiftbus
450- run : |
451- unzip -o xswiftbus-windows-64-*.zip
452- unzip -o xswiftbus-linux-64-*.zip
453- unzip -o xswiftbus-macos-64-*.zip
454- zip -r -9 xswiftbus-fat-allos-${{ needs.preBuild.outputs.version }}.zip xswiftbus
455- - name : Upload xswiftbus-fat
456- uses : actions/upload-artifact@v4
457- with :
458- name : xswiftbus-fat-allos-${{ needs.preBuild.outputs.version }}
459- path : xswiftbus-fat-allos-*
460- - name : Remove xswiftbus-thin artifacts
461- uses : swift-project/delete-artifact@swift
462- with :
463- name : xswiftbus-thin-*
464-
465- release :
466- runs-on : ubuntu-22.04
467- needs : [preBuild, postBuild]
468- if : ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
469- outputs :
470- id : ${{ steps.create.outputs.release_id }}
471- permissions :
472- id-token : write
473- contents : write
474- pages : write
475- environment : github-pages
476-
477- steps :
478- - name : Download artifacts
479- uses : actions/download-artifact@v4
480- - name : Flatten directories
481- run : |
482- mv swiftinstaller-*/* .
483- mv xswiftbus-*/* .
484- mkdir swiftsymbols
485- mv swiftsymbols-*/* swiftsymbols
486- - name : Create release
487- uses :
swift-project/[email protected] 488- id : create
489- with :
490- token : ${{ secrets.GITHUB_TOKEN }}
491- tag : v${{ needs.preBuild.outputs.version }}
492- commitish : ${{ github.sha }}
493- body : Version ${{ needs.preBuild.outputs.version }}
494- draft : true
495- prerelease : true
496- gzip : folders
497- files : >
498- swiftinstaller-linux-64-${{ needs.preBuild.outputs.version }}.run
499- swiftinstaller-windows-64-${{ needs.preBuild.outputs.version }}.exe
500- swiftinstaller-macos-64-${{ needs.preBuild.outputs.version }}.dmg
501- xswiftbus-fat-allos-${{ needs.preBuild.outputs.version }}.zip
502- swiftsymbols-allos-${{ needs.preBuild.outputs.version }}:swiftsymbols
503- - name : Publish doxygen
504- uses : actions/deploy-pages@v4
505-
506- notify :
507- runs-on : ubuntu-22.04
508- needs : [preBuild, checks, buildLinux, buildWin64, buildMacOS, postBuild, release]
509- if : always()
510-
511- steps :
512- - name : Install dependencies
513- run : |
514- sudo apt-get -y install jo jq
515- - name : Query GitHub annotations
516- 517- id : checkruns
518- env :
519- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
520- with :
521- route : GET /repos/swift-project/pilotclient/commits/${{ github.sha }}/check-runs
522- - name : Prepare Discord build message
523- run : |
524- result=SKIPPED
525- ${{ contains(needs.*.result, 'success') }} && result=SUCCESS
526- for run in $CHECK_RUNS; do
527- curl -L -H "Accept: application/vnd.github+json" -H "Authorization: Bearer $TOKEN" -H "X-GitHub-Api-Version: 2022-11-28" \
528- "https://api.github.com/repos/swift-project/pilotclient/check-runs/$run/annotations" \
529- | jq -e 'any(.[].annotation_level; . == "warning" or . == "error")' && result=WARNING
530- done
531- ${{ contains(needs.*.result, 'cancelled') }} && result=CANCELLED
532- ${{ contains(needs.*.result, 'failure') }} && result=FAILED
533- [[ $result = SKIPPED ]] && emoji=repeat
534- [[ $result = SUCCESS ]] && emoji=white_check_mark
535- [[ $result = WARNING ]] && emoji=warning
536- [[ $result = CANCELLED ]] && emoji=grey_question
537- [[ $result = FAILED ]] && emoji=x
538- echo "result=$result" >>$GITHUB_ENV
539- echo "emoji=$emoji" >>$GITHUB_ENV
540- env :
541- CHECK_RUNS : ${{ join(fromJson(steps.checkruns.outputs.data).check_runs.*.id, ' ') }}
542- TOKEN : ${{ secrets.GITHUB_TOKEN }}
543- - name : Prepare Discord release message
544- 545- if : ${{ needs.release.result == 'success' }}
546- id : release
547- env :
548- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
549- with :
550- route : GET /repos/swift-project/pilotclient/releases/${{ needs.release.outputs.id }}
551- - name : Send Discord build message
552- run : |
553- cat >message <<EOF
554- > :${{ env.emoji }}: \`${{ github.ref }}\`
555- > **${{ env.result }}** (triggered by ${{ github.event_name }})
556- > <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}>
557- EOF
558- jo content=@message | curl -i -H "Accept: application/json" -H "Content-Type: application/json" $WEBHOOK -d @-
559- env :
560- WEBHOOK : ${{ secrets.DISCORD_WEBHOOK }}
561- - name : Send Discord release message
562- if : ${{ needs.release.result == 'success' }}
563- run : |
564- cat >message <<EOF
565- > :package: Created draft release \`v${{ needs.preBuild.outputs.version }}\`
566- > <${{ fromJson(steps.release.outputs.data).html_url }}>
567- EOF
568- jo content=@message | curl -i -H "Accept: application/json" -H "Content-Type: application/json" $WEBHOOK -d @-
569- env :
570- WEBHOOK : ${{ secrets.DISCORD_WEBHOOK }}
0 commit comments