fixup! ci: Run static code analysis #1506
Workflow file for this run
This file contains hidden or 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' }} | |
| do_doxygen: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| do_static_analysis: ${{ github.event_name == 'push' && github.ref != 'refs/heads/main' }} | |
| qt_version: 6.10.0 | |
| bitrock_version: qt-professional-24.7.0 | |
| bitrock_url: https://releases.installbuilder.com/installbuilder | |
| externals: swift-project/externals | |
| externals_sha: e1f1743ba159e11b0c065ea8f1ae1a0e91e3bf39 | |
| 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 | |
| with: | |
| fetch-depth: '0' | |
| - name: Install gitlint | |
| run: | | |
| pip install gitlint==0.19.1 | |
| - name: Run gitlint | |
| run: gitlint --commits d789f61044e63e1a00d8e9f1d4d49c8d9ffc42a9..HEAD | |
| - name: Install REUSE | |
| run: | | |
| pip install reuse==4.0.3 | |
| - name: Run REUSE lint | |
| run: reuse lint | |
| - 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: Install Qt docs | |
| if: ${{ env.do_doxygen == 'true' }} | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.qt_version }} | |
| no-qt-binaries: true | |
| documentation: true | |
| cache: true | |
| - name: Run doxygen | |
| if: ${{ env.do_doxygen == 'true' }} | |
| working-directory: docs | |
| run: | | |
| sudo apt-get -y install doxygen graphviz | |
| doxygen Doxyfile | |
| env: | |
| DOXY_SRC_ROOT: .. | |
| DOXY_TAGFILES: ${{ runner.workspace }}/Qt/Docs/Qt-${{ env.qt_version }} | |
| - name: Upload doxygen | |
| if: ${{ env.do_doxygen == 'true' }} | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: docs/html/ | |
| staticAnalysis: | |
| runs-on: ubuntu-24.04 | |
| needs: checks | |
| if: ${{ github.event_name == 'push' && github.ref != 'refs/heads/main' }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: '0' | |
| submodules: true | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.qt_version }} | |
| modules: 'qtmultimedia' | |
| cache: true | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get -y install dbus-x11 libglu1-mesa-dev libpulse-dev libdbus-1-dev ninja-build | |
| pip3 install requests conan | |
| - name: Check version | |
| run: | | |
| clang-tidy --version | |
| - 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: Install conan dependencies | |
| shell: bash | |
| env: | |
| ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} | |
| ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} | |
| run: | | |
| conan profile detect | |
| conan remote disable conancenter | |
| conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local | |
| conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN" | |
| conan install . --output-folder=build_conan --deployer=full_deploy -pr=ci/profile_linux | |
| - name: Run static analysis | |
| run: | | |
| mkdir build_static_analysis | |
| cmake -B build_static_analysis --preset=ci-build-linux-no-pch . | |
| python3 scripts/run_static_analysis.py --build-path build_static_analysis --clang-tidy | |
| rm -rf build_static_analysis | |
| buildLinux: | |
| runs-on: ubuntu-22.04 | |
| needs: [preBuild, checks, staticAnalysis] | |
| env: | |
| BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }} | |
| BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }} | |
| BITROCK_BUILDER: ~/installbuilder/bin/builder | |
| steps: | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.qt_version }} | |
| modules: 'qtmultimedia' | |
| cache: true | |
| - name: Cache InstallBuilder | |
| id: cache-bitrock | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/installbuilder.run | |
| key: installbuilder-${{ env.bitrock_version }}-linux-x64 | |
| - name: Download InstallBuilder | |
| if: steps.cache-bitrock.outputs.cache-hit != 'true' | |
| run: | | |
| wget --retry-connrefused -t 10 -w 10 -T 60 -O ~/installbuilder.run ${{ env.bitrock_url }}/installbuilder-${{ env.bitrock_version }}-linux-x64-installer.run | |
| - name: Install InstallBuilder | |
| run: | | |
| chmod 700 ~/installbuilder.run | |
| ~/installbuilder.run --mode unattended --prefix ~/installbuilder | |
| cat >~/license.xml <<EOF | |
| $BITROCK_LICENSE | |
| EOF | |
| env: | |
| BITROCK_LICENSE: ${{ secrets.BITROCK_LICENSE }} | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get -y install dbus-x11 libglu1-mesa-dev libpulse-dev libdbus-1-dev ninja-build | |
| pip3 install requests conan | |
| - 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: Install conan dependencies | |
| shell: bash | |
| env: | |
| ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} | |
| ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} | |
| run: | | |
| conan profile detect | |
| conan remote disable conancenter | |
| conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local | |
| conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN" | |
| conan install . --output-folder=build_conan --deployer=full_deploy -pr=ci/profile_linux | |
| - name: Start DBus session bus | |
| run: | | |
| dbus-launch --sh-syntax | tee session.sh | |
| eval $(cat session.sh) | |
| echo "DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS" >>$GITHUB_ENV | |
| - name: Create Vatsim key file | |
| if: ${{ env.do_vatsim_key == 'true' }} | |
| run: | | |
| cat >vatsim.json <<EOF | |
| { "vatsim": { "id": "$VATSIM_ID", "key": "$VATSIM_KEY" } } | |
| EOF | |
| 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: | | |
| python3 -u scripts/build.py -w 64 -t gcc | |
| - name: Build swift (with symbols) | |
| if: ${{ env.do_symbols == 'true' }} | |
| run: | | |
| python3 -u scripts/build.py -w 64 -t gcc --upload-symbols | |
| - name: Upload installer | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: swiftinstaller-linux-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-linux-64-${{ needs.preBuild.outputs.version }} | |
| path: ${{ github.workspace }}/swiftsymbols-* | |
| - name: Upload xswiftbus | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: xswiftbus-thin-linux-64-${{ needs.preBuild.outputs.version }} | |
| path: ${{ github.workspace }}/xswiftbus-* | |
| buildWin64: | |
| runs-on: windows-2022 | |
| needs: [preBuild, checks, staticAnalysis] | |
| env: | |
| BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }} | |
| BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }} | |
| BITROCK_BUILDER: "~/installbuilder/bin/builder-cli.exe" | |
| steps: | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.qt_version }} | |
| modules: 'qtmultimedia' | |
| 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: Cache InstallBuilder | |
| id: cache-bitrock | |
| uses: actions/cache@v4 | |
| with: | |
| path: C:\installbuilder.exe | |
| key: installbuilder-${{ env.bitrock_version }}-windows-x64 | |
| - name: Download InstallBuilder | |
| if: steps.cache-bitrock.outputs.cache-hit != 'true' | |
| shell: C:\msys64\usr\bin\bash.exe -le {0} | |
| run: | | |
| wget --retry-connrefused -t 10 -w 10 -T 60 -O /c/installbuilder.exe ${{ env.bitrock_url }}/installbuilder-${{ env.bitrock_version }}-windows-x64-installer.exe | |
| env: | |
| MSYSTEM: MSYS2 | |
| - name: Install InstallBuilder | |
| run: | | |
| start -wait "C:\installbuilder.exe" @("--mode", "unattended", "--prefix", "$HOME\installbuilder") | |
| echo >$HOME\license.xml @" | |
| $env:BITROCK_LICENSE | |
| "@ | |
| env: | |
| BITROCK_LICENSE: ${{ secrets.BITROCK_LICENSE }} | |
| - name: Install dependencies | |
| run: | | |
| pip install requests PyInstaller conan | |
| - 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: Install conan dependencies | |
| shell: bash | |
| env: | |
| ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} | |
| ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} | |
| run: | | |
| conan profile detect | |
| conan remote disable conancenter | |
| conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local | |
| conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN" | |
| conan install . --output-folder=build_conan --deployer=full_deploy -pr=ci/profile_win | |
| - 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' }} | |
| shell: cmd | |
| run: | | |
| build_conan\\build\\RelWithDebInfo\\generators\\conanrun.bat && python -u scripts/build.py -w 64 -t msvc | |
| - name: Build swift (with symbols) | |
| if: ${{ env.do_symbols == 'true' }} | |
| shell: cmd | |
| run: | | |
| build_conan\\build\\RelWithDebInfo\\generators\\conanrun.bat && 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-* | |
| buildMacOS: | |
| runs-on: macos-13 | |
| needs: [preBuild, checks, staticAnalysis] | |
| env: | |
| BACKTRACE_SYMBOL_TOKEN: ${{ secrets.BACKTRACE_SYMBOL_TOKEN }} | |
| BACKTRACE_MINIDUMP_TOKEN: ${{ secrets.BACKTRACE_MINIDUMP_TOKEN }} | |
| BITROCK_BUILDER: /Applications/installbuilder/bin/Builder.app/Contents/MacOS/installbuilder.sh | |
| steps: | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.qt_version }} | |
| modules: 'qtmultimedia' | |
| cache: true | |
| - name: Cache InstallBuilder | |
| id: cache-bitrock | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/installbuilder.dmg | |
| key: installbuilder-${{ env.bitrock_version }}-osx | |
| - name: Download InstallBuilder | |
| if: steps.cache-bitrock.outputs.cache-hit != 'true' | |
| run: | | |
| wget --retry-connrefused -t 10 -w 10 -T 60 -O $HOME/installbuilder.dmg ${{ env.bitrock_url }}/installbuilder-${{ env.bitrock_version }}-osx-installer.dmg | |
| - name: Install InstallBuilder | |
| run: | | |
| chmod 700 $HOME/installbuilder.dmg | |
| sudo hdiutil attach $HOME/installbuilder.dmg | |
| sudo cp -rf "/Volumes/InstallBuilder Qt/installbuilder-${{ env.bitrock_version }}-osx-installer.app" /Applications | |
| sudo hdiutil detach "/Volumes/InstallBuilder Qt" | |
| sudo spctl --master-disable | |
| sudo chmod -R +x /Applications/installbuilder-${{ env.bitrock_version }}-osx-installer.app | |
| sudo xattr -r -d com.apple.quarantine /Applications/installbuilder-${{ env.bitrock_version }}-osx-installer.app | |
| sudo /Applications/installbuilder-${{ env.bitrock_version }}-osx-installer.app/Contents/MacOs/installbuilder.sh --mode unattended --prefix /Applications/installbuilder | |
| cat >~/license.xml <<EOF | |
| $BITROCK_LICENSE | |
| EOF | |
| env: | |
| BITROCK_LICENSE: ${{ secrets.BITROCK_LICENSE }} | |
| - name: Install dependencies | |
| run: | | |
| pip3 install requests conan | |
| - 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: Install conan dependencies | |
| shell: bash | |
| env: | |
| ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} | |
| ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }} | |
| run: | | |
| # Empty presets to avoid autogenerated config from Conan | |
| echo "{\"version\": 6}" > CMakeUserPresets.json | |
| conan profile detect | |
| conan remote disable conancenter | |
| conan remote add swift https://artifactory.swift-project.org/artifactory/api/conan/conan-local | |
| conan remote login swift "$ARTIFACTORY_USER" --password "$ARTIFACTORY_TOKEN" | |
| conan install . --output-folder=build_conan --deployer=full_deploy -pr=ci/profile_mac | |
| conan install . --output-folder=build_conan_arm --deployer=full_deploy -pr=ci/profile_mac_arm | |
| # https://doc.qt.io/qt-6/macos-issues.html#d-bus-and-macos | |
| 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 | |
| - name: Create Vatsim key file | |
| if: ${{ env.do_vatsim_key == 'true' }} | |
| run: | | |
| cat >vatsim.json <<EOF | |
| { "vatsim": { "id": "$VATSIM_ID", "key": "$VATSIM_KEY" } } | |
| EOF | |
| 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: | | |
| python3 -u scripts/build.py -w 64 -t clang | |
| - name: Build swift (with symbols) | |
| if: ${{ env.do_symbols == 'true' }} | |
| run: | | |
| python3 -u scripts/build.py -w 64 -t clang --upload-symbols | |
| - name: Upload installer | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: swiftinstaller-macos-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-macos-64-${{ needs.preBuild.outputs.version }} | |
| path: ${{ github.workspace }}/swiftsymbols-* | |
| - name: Upload xswiftbus | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: xswiftbus-thin-macos-64-${{ needs.preBuild.outputs.version }} | |
| path: ${{ github.workspace }}/xswiftbus-* | |
| postBuild: | |
| runs-on: ubuntu-22.04 | |
| needs: [preBuild, checks, staticAnalysis, buildLinux, buildWin64, buildMacOS] | |
| steps: | |
| - name: Download xswiftbus-thin | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: xswiftbus-thin-* | |
| merge-multiple: true | |
| - name: Repackage xswiftbus | |
| run: | | |
| unzip -o xswiftbus-windows-64-*.zip | |
| unzip -o xswiftbus-linux-64-*.zip | |
| unzip -o xswiftbus-macos-64-*.zip | |
| zip -r -9 xswiftbus-fat-allos-${{ needs.preBuild.outputs.version }}.zip 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 }}.zip | |
| swiftsymbols-allos-${{ needs.preBuild.outputs.version }}:swiftsymbols | |
| - name: Publish doxygen | |
| uses: actions/deploy-pages@v4 | |
| notify: | |
| runs-on: ubuntu-22.04 | |
| needs: [preBuild, checks, buildLinux, buildWin64, buildMacOS, 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 }} |