Fix style of all enum classes in editor
#3347
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
| name: Build | |
| on: | |
| push: | |
| branches-ignore: | |
| - gh-readonly-queue/** | |
| pull_request: | |
| merge_group: | |
| jobs: | |
| build-cmake: | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CARGO_HTTP_MULTIPLEXING: false | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| name: [ubuntu-latest-fancy, macOS-latest, windows-latest, ubuntu-22.04, windows-latest-mingw] | |
| include: | |
| - name: ubuntu-latest-fancy | |
| os: ubuntu-latest | |
| cmake-args: -G Ninja | |
| cmake-init-env: CXXFLAGS=-Werror | |
| package-file: "*-linux_x86_64.tar.xz" | |
| - name: ubuntu-22.04 | |
| os: ubuntu-22.04 | |
| cmake-path: /usr/bin/ | |
| cmake-args: -G "Unix Makefiles" -DTEST_MYSQL=ON | |
| cmake-init-env: CXXFLAGS=-Werror | |
| gtest-env: GTEST_FILTER=-*SQLite* | |
| package-file: "*-linux_x86_64.tar.xz" | |
| - name: macOS-latest | |
| os: macOS-latest | |
| cmake-args: -G Ninja | |
| cmake-init-env: CXXFLAGS=-Werror | |
| package-file: "*-macos.dmg" | |
| - name: windows-latest | |
| os: windows-latest | |
| cmake-args: -A x64 -DEXCEPTION_HANDLING=ON -DVULKAN=ON | |
| cmake-init-env: CXXFLAGS=/WX LDFLAGS=/WX | |
| package-file: "*-win64.zip" | |
| executable-suffix: .exe | |
| - name: windows-latest-mingw | |
| os: windows-latest | |
| cmake-args: -G Ninja -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DEXCEPTION_HANDLING=ON -DCMAKE_RC_COMPILER=windres -DCMAKE_AR=ar -DVULKAN=ON | |
| cmake-init-env: CXXFLAGS=-Werror LDFLAGS=-Werror | |
| package-file: "*-win64.zip" | |
| executable-suffix: .exe | |
| # Delete outdated libwinpthread-1.dll after configuring to workaround https://github.com/ddnet/ddnet/issues/10203 when using MinGW. | |
| # Adding this condition into the individual steps is not possible without using bash shell consistently, which does not work for windows-latest. | |
| workaround-issue10203-run-after-configure: rm libwinpthread-1.dll | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Prepare Linux | |
| if: contains(matrix.os, 'ubuntu') | |
| run: | | |
| sudo apt-get update -y | |
| # mount: /var/lib/grub/esp: special device /dev/disk/by-id/scsi-... does not exist. | |
| # sudo apt-get upgrade -y | |
| sudo apt-get install pkg-config ninja-build libfreetype6-dev libnotify-dev libsdl2-dev libsqlite3-dev libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev libx264-dev libpng-dev valgrind gcovr libglew-dev -y | |
| - name: Prepare Linux (non-fancy) | |
| if: contains(matrix.os, 'ubuntu') && !contains(matrix.name, 'fancy') | |
| run: | | |
| curl -LO https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz | |
| sudo tar --strip-components 1 -C /usr -xf cmake-3.13.4-Linux-x86_64.tar.gz | |
| # Our minimum supported Rust version (MSRV) | |
| rustup default 1.63.0 | |
| sudo rm -rf /var/lib/mysql/ /var/run/mysqld | |
| sudo mkdir /var/lib/mysql/ /var/run/mysqld/ | |
| sudo chown mysql:mysql /var/lib/mysql/ /var/run/mysqld/ | |
| sudo mysqld --initialize-insecure --user=mysql --basedir=/usr --datadir=/var/lib/mysql/ | |
| sudo /usr/bin/mysqld_safe --basedir=/usr --datadir='/var/lib/mysql/' & | |
| sleep 10 | |
| sudo mysql <<EOF | |
| CREATE DATABASE ddnet; | |
| CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword'; | |
| GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost'; | |
| FLUSH PRIVILEGES; | |
| EOF | |
| - name: Prepare Linux (fancy) | |
| if: contains(matrix.os, 'ubuntu') && contains(matrix.name, 'fancy') | |
| run: | | |
| sudo apt-get install cmake libmariadb-dev libwebsockets-dev mariadb-server -y | |
| sudo systemctl stop mysql | |
| sudo rm -rf /var/lib/mysql/ | |
| sudo mysql_install_db --user=mysql --datadir=/var/lib/mysql/ | |
| cd /usr; sudo mysqld_safe --datadir='/var/lib/mysql/' --no-watch | |
| sleep 10 | |
| sudo mysql <<EOF | |
| CREATE DATABASE ddnet; | |
| CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword'; | |
| GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost'; | |
| FLUSH PRIVILEGES; | |
| EOF | |
| - name: Prepare macOS | |
| if: contains(matrix.os, 'macOS') | |
| run: | | |
| brew update | |
| brew install ffmpeg molten-vk ninja pkg-config rust sdl2 | |
| brew upgrade freetype | |
| pip3 install --break-system-packages dmgbuild | |
| echo /Library/Frameworks/Python.framework/Versions/3.12/bin >> $GITHUB_PATH | |
| sudo rm -rf /Library/Developer/CommandLineTools | |
| - name: Prepare Windows MinGW | |
| if: contains(matrix.os, 'windows') && contains(matrix.name, 'mingw') | |
| run: | | |
| rustup toolchain install stable-x86_64-pc-windows-gnu | |
| rustup target add x86_64-pc-windows-gnu | |
| rustup default stable-x86_64-pc-windows-gnu | |
| rustup set default-host x86_64-pc-windows-gnu | |
| - name: Install Vulkan SDK | |
| uses: humbletim/install-vulkan-sdk@v1.2 | |
| with: | |
| version: 1.3.296.0 | |
| cache: true | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: | | |
| src/mastersrv | |
| src/masterping | |
| ./ | |
| - name: Build mastersrv | |
| if: ${{ !contains(matrix.os, 'ubuntu-22.04') }} | |
| run: | | |
| cd src/mastersrv | |
| cargo build | |
| - name: Build masterping | |
| if: ${{ !contains(matrix.os, 'ubuntu-22.04') }} | |
| run: | | |
| cd src/masterping | |
| cargo build | |
| - name: Build in debug mode | |
| run: | | |
| mkdir debug | |
| cd debug | |
| ${{ matrix.cmake-path }}cmake --version | |
| ${{ matrix.cmake-path }}cmake -E env ${{ matrix.cmake-init-env }} ${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Debug -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. .. | |
| ${{ matrix.workaround-issue10203-run-after-configure }} | |
| ${{ matrix.cmake-path }}cmake --build . --config Debug --target everything | |
| - name: Test debug | |
| run: | | |
| cd debug | |
| ${{ matrix.cmake-path }}cmake -E env ${{ matrix.gtest-env }} ${{ matrix.cmake-path }}cmake --build . --config Debug --target run_tests | |
| - name: Run debug server | |
| run: | | |
| cd debug | |
| ./DDNet-Server shutdown | |
| - name: Build in release mode | |
| run: | | |
| mkdir release | |
| cd release | |
| ${{ matrix.cmake-path }}cmake -E env ${{ matrix.cmake-init-env }} ${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Release -Werror=dev -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. .. | |
| ${{ matrix.workaround-issue10203-run-after-configure }} | |
| ${{ matrix.cmake-path }}cmake --build . --config Release --target everything | |
| - name: Test release | |
| run: | | |
| cd release | |
| ${{ matrix.cmake-path }}cmake -E env ${{ matrix.gtest-env }} ${{ matrix.cmake-path }}cmake --build . --config Release --target run_tests | |
| - name: Run release server | |
| run: | | |
| cd release | |
| ./DDNet-Server shutdown | |
| - name: Build headless client | |
| if: ${{ !contains(matrix.os, 'ubuntu') }} | |
| run: | | |
| mkdir headless | |
| cd headless | |
| ${{ matrix.cmake-path }}cmake -E env ${{ matrix.cmake-init-env }} ${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DHEADLESS_CLIENT=ON -DCMAKE_BUILD_TYPE=Debug -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. .. | |
| ${{ matrix.workaround-issue10203-run-after-configure }} | |
| ${{ matrix.cmake-path }}cmake --build . --config Debug | |
| - name: Build headless client with code coverage | |
| if: contains(matrix.os, 'ubuntu-latest') | |
| run: | | |
| mkdir headless | |
| cd headless | |
| ${{ matrix.cmake-path }}cmake -E env CXXFLAGS="--coverage -Werror" ${{ matrix.cmake-path }}cmake -E env LDFLAGS="--coverage -Werror" ${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DHEADLESS_CLIENT=ON -DCMAKE_BUILD_TYPE=Debug -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. .. | |
| ${{ matrix.workaround-issue10203-run-after-configure }} | |
| ${{ matrix.cmake-path }}cmake -E env RUSTFLAGS="-Clink-arg=--coverage" ${{ matrix.cmake-path }}cmake --build . --config Debug | |
| - name: Test headless client (unit tests) | |
| if: ${{ !contains(matrix.os, 'ubuntu') }} | |
| run: | | |
| cd headless | |
| ${{ matrix.cmake-path }}cmake --build . --config Debug --target run_tests | |
| - name: Test headless client (unit tests) with code coverage | |
| if: contains(matrix.os, 'ubuntu-latest') | |
| run: | | |
| cd headless | |
| ${{ matrix.cmake-path }}cmake -E env RUSTFLAGS="-Clink-arg=--coverage" RUSTDOCFLAGS="-Clink-arg=--coverage" ${{ matrix.cmake-path }}cmake --build . --config Debug --target run_tests | |
| - name: Upload Codecov report (unit tests) | |
| if: contains(matrix.os, 'ubuntu-latest') | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| flags: unittests | |
| - name: Build in release mode with debug info and all features on | |
| if: contains(matrix.name, 'fancy') | |
| run: | | |
| mkdir fancy | |
| cd fancy | |
| ${{ matrix.cmake-path }}cmake -E env ${{ matrix.cmake-init-env }} ${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. -DANTIBOT=ON -DWEBSOCKETS=ON .. | |
| ${{ matrix.workaround-issue10203-run-after-configure }} | |
| ${{ matrix.cmake-path }}cmake --build . --config RelWithDebInfo --target everything | |
| - name: Test fancy | |
| if: contains(matrix.name, 'fancy') | |
| run: | | |
| cd fancy | |
| ${{ matrix.cmake-path }}cmake -E env ${{ matrix.gtest-env }} ${{ matrix.cmake-path }}cmake --build . --config RelWithDebInfo --target run_tests | |
| - name: Run fancy server | |
| if: contains(matrix.name, 'fancy') | |
| run: | | |
| cd fancy | |
| ./DDNet-Server shutdown | |
| - name: Run integration tests | |
| id: integration_test | |
| if: ${{ !contains(matrix.os, 'ubuntu') }} | |
| continue-on-error: true | |
| run: | | |
| cp src/mastersrv/target/debug/mastersrv${{ matrix.executable-suffix }} headless | |
| python scripts/integration_test.py --show-full-output --test-mastersrv headless | |
| - name: Run integration tests with Valgrind's Memcheck and code coverage | |
| id: integration_test_valgrind | |
| if: contains(matrix.os, 'ubuntu-latest') | |
| continue-on-error: true | |
| run: | | |
| # Remove old coverage data: | |
| find headless -name '*.gcno' -o -name '*.gcda' -delete | |
| cp src/mastersrv/target/debug/mastersrv${{ matrix.executable-suffix }} headless | |
| python scripts/integration_test.py --show-full-output --test-mastersrv --valgrind-memcheck headless | |
| - name: Upload integration test results | |
| id: integration_test_artifact_upload | |
| if: steps.integration_test.outcome == 'failure' || steps.integration_test_valgrind.outcome == 'failure' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ddnet-${{ matrix.name }}-integration-test-results | |
| path: headless/integration_* | |
| if-no-files-found: error | |
| - name: Summarize integration test results | |
| if: steps.integration_test.outcome == 'failure' || steps.integration_test_valgrind.outcome == 'failure' | |
| shell: bash | |
| run: | | |
| echo -e "\033[31mFAILED: Integration test failed. Refer to the workflow logs and uploaded artifacts in the steps above for details.\033[m" | |
| echo "### Integration test failed" >> $GITHUB_STEP_SUMMARY | |
| echo >> $GITHUB_STEP_SUMMARY | |
| echo "See summary below. Refer to the workflow logs and uploaded artifacts for details." >> $GITHUB_STEP_SUMMARY | |
| echo >> $GITHUB_STEP_SUMMARY | |
| echo "Artifact URL: ${{ steps.integration_test_artifact_upload.outputs.artifact-url }}" >> $GITHUB_STEP_SUMMARY | |
| for integration_dir in headless/integration_*; do | |
| echo >> $GITHUB_STEP_SUMMARY | |
| echo "<details><summary>Test $(basename "$integration_dir")</summary>" >> $GITHUB_STEP_SUMMARY | |
| echo >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| cat "$integration_dir/test_failure.log" >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| echo >> $GITHUB_STEP_SUMMARY | |
| echo "</details>" >> $GITHUB_STEP_SUMMARY | |
| done | |
| exit 1 | |
| - name: Upload Codecov report (integration tests) | |
| if: contains(matrix.os, 'ubuntu-latest') | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| flags: integrationtests | |
| - name: Package | |
| run: | | |
| cd release | |
| ${{ matrix.cmake-path }}cmake --build . --config Release --target package_default | |
| mkdir artifacts | |
| mv ${{ matrix.package-file }} artifacts | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ddnet-${{ matrix.name }} | |
| path: release/artifacts | |
| build-android: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| CARGO_HTTP_MULTIPLEXING: false | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Validate Gradle Wrapper | |
| uses: gradle/actions/wrapper-validation@v4 | |
| - name: Prepare Linux | |
| run: | | |
| sudo apt-get update -y | |
| sudo apt-get install ninja-build openjdk-21-jdk openssl | |
| curl -LO https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-Linux-x86_64.tar.gz | |
| mkdir -p /home/runner/cmake | |
| tar --strip-components 1 -C /home/runner/cmake -xf cmake-3.22.1-Linux-x86_64.tar.gz | |
| rustup default 1.92.0 | |
| cargo install cargo-ndk | |
| rustup target add armv7-linux-androideabi | |
| rustup target add i686-linux-android | |
| rustup target add aarch64-linux-android | |
| rustup target add x86_64-linux-android | |
| scripts/android/download_android_sdk.sh /home/runner | |
| - name: Install Vulkan SDK | |
| uses: humbletim/install-vulkan-sdk@v1.2 | |
| with: | |
| version: 1.3.296.0 | |
| cache: true | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: | | |
| src/mastersrv | |
| src/masterping | |
| ./ | |
| - name: Build Android app | |
| env: | |
| TW_KEY_NAME: /home/runner/DDNet.jks | |
| TW_KEY_ALIAS: DDNet-Key | |
| run: | | |
| export TW_KEY_PW="$(openssl rand -base64 32)" | |
| keytool -genkey -v -keystore "$TW_KEY_NAME" -keyalg RSA -keysize 2048 -validity 10000 -alias "$TW_KEY_ALIAS" -storepass "$TW_KEY_PW" -dname "CN=DDNet CI, OU=DDNet, O=DDNet" | |
| export ANDROID_HOME="/home/runner/Android/Sdk" | |
| unset ANDROID_SDK_ROOT | |
| export PATH=/home/runner/cmake/bin:$PATH | |
| scripts/android/cmake_android.sh all DDNet org.ddnet.client Release build-android | |
| mkdir artifacts | |
| mv build-android/DDNet.apk artifacts | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ddnet-android | |
| path: artifacts | |
| build-emscripten: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| CARGO_HTTP_MULTIPLEXING: false | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Prepare Linux | |
| run: | | |
| curl -LO https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-Linux-x86_64.tar.gz | |
| mkdir -p /home/runner/cmake | |
| tar --strip-components 1 -C /home/runner/cmake -xf cmake-3.22.1-Linux-x86_64.tar.gz | |
| rustup default 1.89.0 | |
| rustup target add wasm32-unknown-emscripten | |
| git clone https://github.com/emscripten-core/emsdk emsdk | |
| cd emsdk | |
| ./emsdk install 4.0.22 | |
| ./emsdk activate 4.0.22 | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: | | |
| src/mastersrv | |
| src/masterping | |
| ./ | |
| - name: Build headless Emscripten client in debug mode | |
| run: | | |
| export PATH=/home/runner/cmake/bin:$PATH | |
| source emsdk/emsdk_env.sh | |
| emcmake cmake -H. -G "Unix Makefiles" -B build-emscripten-headless -DCMAKE_BUILD_TYPE=Debug -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DHEADLESS_CLIENT=ON -DPREFER_BUNDLED_LIBS=ON | |
| cmake --build build-emscripten-headless --target game-client -j$(nproc) | |
| - name: Test headless Emscripten client | |
| run: | | |
| export MOZ_HEADLESS=1 | |
| source emsdk/emsdk_env.sh | |
| emrun --browser firefox build-emscripten-headless/DDNet.html -- "quit" | |
| - name: Build Emscripten client in release mode | |
| run: | | |
| export PATH=/home/runner/cmake/bin:$PATH | |
| source emsdk/emsdk_env.sh | |
| # -G "Unix Makefiles" required due to https://gitlab.kitware.com/cmake/cmake/-/issues/16395 | |
| emcmake cmake -H. -G "Unix Makefiles" -B build-emscripten-release -DCMAKE_BUILD_TYPE=Release -DVIDEORECORDER=OFF -DVULKAN=OFF -DSERVER=OFF -DTOOLS=OFF -DPREFER_BUNDLED_LIBS=ON | |
| cmake --build build-emscripten-release --target game-client -j$(nproc) | |
| mkdir artifacts | |
| mv build-emscripten-release/DDNet.data artifacts | |
| mv build-emscripten-release/DDNet.js artifacts | |
| mv build-emscripten-release/DDNet.wasm artifacts | |
| cp other/emscripten/minimal.html artifacts/DDNet.html | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ddnet-emscripten | |
| path: artifacts |