fixup! feat: Add Innosetup installer #1190
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: Copyright (C) swift Project Community / Contributors | |
# SPDX-License-Identifier: CC0-1.0 | |
name: Build swift | |
on: | |
push: | |
branches-ignore: | |
- stable/** | |
- nobuild/** | |
pull_request: | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
do_vatsim_key: ${{ github.event_name == 'push' }} | |
do_symbols: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
qt_version: 6.8.0 | |
bitrock_version: qt-professional-24.7.0 | |
bitrock_url: https://releases.installbuilder.com/installbuilder | |
externals: swift-project/externals | |
externals_sha: 53e671fc3ba76f2036b9130314507776d161c6e0 | |
use_externals: ${{ secrets.EXTERNALS_PAT != '' }} | |
jobs: | |
preBuild: | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository }} | |
outputs: | |
version: ${{ steps.version.outputs.value }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get version number | |
id: version | |
run: | | |
echo "value=$(python3 -u scripts/utils.py --version)" >>$GITHUB_OUTPUT | |
- name: Remove artifacts | |
uses: swift-project/delete-artifact@swift | |
with: | |
name: | | |
xswiftbus-thin-* | |
xswiftbus-fat-* | |
swiftsymbols-* | |
swiftinstaller-* | |
failOnError: false | |
warnIfNotFound: false | |
checks: | |
runs-on: ubuntu-22.04 | |
needs: preBuild | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Run clang-format | |
run: | | |
scripts/run_clang_format.py | |
- uses: Trass3r/setup-cpp@1b63900ecf3f0b7c60ee53aa7be122f2c4fe7a2c | |
- name: Run cppcheck | |
run: | | |
sudo apt-get -y install cppcheck | |
cppcheck --template=gcc --inline-suppr --std=c++17 --enable=style,unusedFunction \ | |
-i src/plugins/weatherdata/gfs/g2clib -DCPPCHECK --force --suppressions-list=cppcheck.supp \ | |
--library=qt.cfg --library=posix.cfg . | |
- name: Run doxygen | |
working-directory: docs | |
run: | | |
sudo apt-get -y install doxygen graphviz | |
doxygen Doxyfile | |
env: | |
DOXY_SRC_ROOT: .. | |
- name: Upload doxygen | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: docs/html/ | |
buildWin64: | |
runs-on: windows-2022 | |
needs: [preBuild, checks] | |
env: | |
BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }} | |
BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }} | |
steps: | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v4 | |
with: | |
version: ${{ env.qt_version }} | |
modules: 'qtmultimedia qt5compat' | |
arch: win64_msvc2022_64 | |
cache: true | |
- name: Install Qt debug info | |
uses: jurplel/install-qt-action@v4 | |
with: | |
version: ${{ env.qt_version }} | |
arch: win64_msvc2022_64 | |
cache: true | |
modules: debug_info | |
extra: --archives qtbase | |
- name: Install dependencies | |
run: | | |
pip install requests PyInstaller | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Checkout externals | |
if: ${{ env.use_externals == 'true' }} | |
uses: actions/checkout@v4 | |
env: | |
EXTERNALS_PAT: ${{ secrets.EXTERNALS_PAT }} | |
with: | |
repository: ${{ env.externals }} | |
ref: ${{ env.externals_sha }} | |
token: ${{ env.EXTERNALS_PAT }} | |
path: 'third_party/externals' | |
- name: Create Vatsim key file | |
if: ${{ env.do_vatsim_key == 'true' }} | |
run: | | |
echo >vatsim.json @" | |
{ "vatsim": { "id": "$env:VATSIM_ID", "key": "$env:VATSIM_KEY" } } | |
"@ | |
env: | |
VATSIM_ID: ${{ secrets.VATSIM_ID }} | |
VATSIM_KEY: ${{ secrets.VATSIM_KEY }} | |
- uses: Trass3r/setup-cpp@1b63900ecf3f0b7c60ee53aa7be122f2c4fe7a2c | |
- name: Build swift (without symbols) | |
if: ${{ env.do_symbols != 'true' }} | |
run: | | |
python -u scripts/build.py -w 64 -t msvc | |
- name: Build swift (with symbols) | |
if: ${{ env.do_symbols == 'true' }} | |
run: | | |
python -u scripts/build.py -w 64 -t msvc --upload-symbols | |
- name: Upload installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: swiftinstaller-windows-64-${{ needs.preBuild.outputs.version }} | |
path: ${{ github.workspace }}/swiftinstaller-* | |
- name: Upload symbols | |
uses: actions/upload-artifact@v4 | |
if: ${{ env.do_symbols == 'true' }} | |
with: | |
name: swiftsymbols-windows-64-${{ needs.preBuild.outputs.version }} | |
path: ${{ github.workspace }}/swiftsymbols-* | |
- name: Upload xswiftbus | |
uses: actions/upload-artifact@v4 | |
with: | |
name: xswiftbus-thin-windows-64-${{ needs.preBuild.outputs.version }} | |
path: ${{ github.workspace }}/xswiftbus-* | |
postBuild: | |
runs-on: ubuntu-22.04 | |
needs: [preBuild, checks, buildWin64] | |
steps: | |
- name: Download xswiftbus-thin | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: xswiftbus-thin-* | |
merge-multiple: true | |
- name: Repackage xswiftbus | |
run: | | |
7z x -y xswiftbus-windows-64-*.7z | |
7z x -y xswiftbus-linux-64-*.7z | |
7z x -y xswiftbus-macos-64-*.7z | |
7z a -y -mx=9 xswiftbus-fat-allos-${{ needs.preBuild.outputs.version }}.7z xswiftbus | |
- name: Upload xswiftbus-fat | |
uses: actions/upload-artifact@v4 | |
with: | |
name: xswiftbus-fat-allos-${{ needs.preBuild.outputs.version }} | |
path: xswiftbus-fat-allos-* | |
- name: Remove xswiftbus-thin artifacts | |
uses: swift-project/delete-artifact@swift | |
with: | |
name: xswiftbus-thin-* | |
release: | |
runs-on: ubuntu-22.04 | |
needs: [preBuild, postBuild] | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
outputs: | |
id: ${{ steps.create.outputs.release_id }} | |
permissions: | |
id-token: write | |
contents: write | |
pages: write | |
environment: github-pages | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
- name: Flatten directories | |
run: | | |
mv swiftinstaller-*/* . | |
mv xswiftbus-*/* . | |
mkdir swiftsymbols | |
mv swiftsymbols-*/* swiftsymbols | |
- name: Create release | |
uses: swift-project/[email protected] | |
id: create | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: v${{ needs.preBuild.outputs.version }} | |
commitish: ${{ github.sha }} | |
body: Version ${{ needs.preBuild.outputs.version }} | |
draft: true | |
prerelease: true | |
gzip: folders | |
files: > | |
swiftinstaller-linux-64-${{ needs.preBuild.outputs.version }}.run | |
swiftinstaller-windows-64-${{ needs.preBuild.outputs.version }}.exe | |
swiftinstaller-macos-64-${{ needs.preBuild.outputs.version }}.dmg | |
xswiftbus-fat-allos-${{ needs.preBuild.outputs.version }}.7z | |
swiftsymbols-allos-${{ needs.preBuild.outputs.version }}:swiftsymbols | |
- name: Publish doxygen | |
uses: actions/deploy-pages@v4 | |
notify: | |
runs-on: ubuntu-22.04 | |
needs: [preBuild, checks, buildWin64, postBuild, release] | |
if: always() | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt-get -y install jo jq | |
- name: Query GitHub annotations | |
uses: octokit/[email protected] | |
id: checkruns | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
route: GET /repos/swift-project/pilotclient/commits/${{ github.sha }}/check-runs | |
- name: Prepare Discord build message | |
run: | | |
result=SKIPPED | |
${{ contains(needs.*.result, 'success') }} && result=SUCCESS | |
for run in $CHECK_RUNS; do | |
curl -L -H "Accept: application/vnd.github+json" -H "Authorization: Bearer $TOKEN" -H "X-GitHub-Api-Version: 2022-11-28" \ | |
"https://api.github.com/repos/swift-project/pilotclient/check-runs/$run/annotations" \ | |
| jq -e 'any(.[].annotation_level; . == "warning" or . == "error")' && result=WARNING | |
done | |
${{ contains(needs.*.result, 'cancelled') }} && result=CANCELLED | |
${{ contains(needs.*.result, 'failure') }} && result=FAILED | |
[[ $result = SKIPPED ]] && emoji=repeat | |
[[ $result = SUCCESS ]] && emoji=white_check_mark | |
[[ $result = WARNING ]] && emoji=warning | |
[[ $result = CANCELLED ]] && emoji=grey_question | |
[[ $result = FAILED ]] && emoji=x | |
echo "result=$result" >>$GITHUB_ENV | |
echo "emoji=$emoji" >>$GITHUB_ENV | |
env: | |
CHECK_RUNS: ${{ join(fromJson(steps.checkruns.outputs.data).check_runs.*.id, ' ') }} | |
TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Prepare Discord release message | |
uses: octokit/[email protected] | |
if: ${{ needs.release.result == 'success' }} | |
id: release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
route: GET /repos/swift-project/pilotclient/releases/${{ needs.release.outputs.id }} | |
- name: Send Discord build message | |
run: | | |
cat >message <<EOF | |
> :${{ env.emoji }}: \`${{ github.ref }}\` | |
> **${{ env.result }}** (triggered by ${{ github.event_name }}) | |
> <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}> | |
EOF | |
jo content=@message | curl -i -H "Accept: application/json" -H "Content-Type: application/json" $WEBHOOK -d @- | |
env: | |
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | |
- name: Send Discord release message | |
if: ${{ needs.release.result == 'success' }} | |
run: | | |
cat >message <<EOF | |
> :package: Created draft release \`v${{ needs.preBuild.outputs.version }}\` | |
> <${{ fromJson(steps.release.outputs.data).html_url }}> | |
EOF | |
jo content=@message | curl -i -H "Accept: application/json" -H "Content-Type: application/json" $WEBHOOK -d @- | |
env: | |
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} |