name: linux # build on c/cpp changes or workflow changes on: push: paths: - 'lib/**.[ch]' - 'lib/**.cpp' - 'src/**.[ch]' - 'src/**.cpp' - '**/CMakeLists.txt' - 'cmake/Modules/**' - 'util/ci/**' - 'misc/irrlichtmt_tag.txt' - 'Dockerfile' - '.dockerignore' - '.github/workflows/linux.yml' pull_request: paths: - 'lib/**.[ch]' - 'lib/**.cpp' - 'src/**.[ch]' - 'src/**.cpp' - '**/CMakeLists.txt' - 'cmake/Modules/**' - 'util/ci/**' - 'misc/irrlichtmt_tag.txt' - 'Dockerfile' - '.dockerignore' - '.github/workflows/linux.yml' env: MINETEST_POSTGRESQL_CONNECT_STRING: 'host=localhost user=minetest password=minetest dbname=minetest' jobs: # Older gcc version (should be close to our minimum supported version) gcc_7: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Install deps run: | source ./util/ci/common.sh install_linux_deps g++-7 - name: Build run: | ./util/ci/build.sh env: CC: gcc-7 CXX: g++-7 - name: Test run: | ./bin/minetest --run-unittests # Current gcc version gcc_12: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - name: Install deps run: | source ./util/ci/common.sh install_linux_deps g++-12 libluajit-5.1-dev - name: Build run: | ./util/ci/build.sh env: CC: gcc-12 CXX: g++-12 - name: Test run: | mkdir nowrite chmod a-w nowrite cd nowrite ../bin/minetest --run-unittests # Older clang version (should be close to our minimum supported version) clang_7: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Install deps run: | source ./util/ci/common.sh install_linux_deps clang-7 valgrind - name: Build run: | ./util/ci/build.sh env: CC: clang-7 CXX: clang++-7 - name: Unittest run: | ./bin/minetest --run-unittests - name: Valgrind run: | valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests # Current clang version clang_14: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - name: Install deps run: | source ./util/ci/common.sh install_linux_deps clang-14 gdb - name: Build run: | ./util/ci/build.sh env: CC: clang-14 CXX: clang++-14 - name: Test run: | ./bin/minetest --run-unittests - name: Integration test + devtest run: | ./util/test_multiplayer.sh # Build with prometheus-cpp (server-only) clang_9_prometheus: name: "clang_9 (PROMETHEUS=1)" runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Install deps run: | source ./util/ci/common.sh install_linux_deps clang-9 - name: Build prometheus-cpp run: | ./util/ci/build_prometheus_cpp.sh - name: Build run: | ./util/ci/build.sh env: CC: clang-9 CXX: clang++-9 CMAKE_FLAGS: "-DENABLE_PROMETHEUS=1 -DBUILD_CLIENT=0" - name: Test run: | ./bin/minetestserver --run-unittests docker: name: "Docker image" runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Build docker image run: | docker build . -t minetest:latest docker run --rm minetest:latest /usr/local/bin/minetestserver --version