From 27a485a472706bededf38f0de2630688739ca0b2 Mon Sep 17 00:00:00 2001 From: Loïc Blot Date: Mon, 20 Apr 2020 20:18:40 +0200 Subject: Replace travis with github actions (#9641) * Move outside of travis to Github actions This will permit to have better integrated CI workflow than the previous travis one. --- .github/workflows/build.yml | 171 +++++++++++++++++++++++++++++++++++++++++ .github/workflows/cpp_lint.yml | 53 +++++++++++++ .github/workflows/lua_lint.yml | 32 ++++++++ 3 files changed, 256 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/cpp_lint.yml create mode 100644 .github/workflows/lua_lint.yml (limited to '.github/workflows') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..0d559b197 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,171 @@ +name: build + +# build on c/cpp changes or workflow changes +on: + push: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/buildbot/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + pull_request: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/buildbot/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + +jobs: + # This is our minor gcc compiler + gcc_6: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install g++-6 gcc-6 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6" + + - name: Test + run: | + ./bin/minetest --run-unittests + + # This is the current gcc compiler (available in bionic) + gcc_8: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install g++-8 gcc-8 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8" + + - name: Test + run: | + ./bin/minetest --run-unittests + + # This is our minor clang compiler + clang_3_9: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-3.9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-3.9 -DCMAKE_CXX_COMPILER=clang++-3.9" + + - name: Test + run: | + ./bin/minetest --run-unittests + + # This is the current clang version + clang_9: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-9 valgrind -qyy + source ./util/ci/common.sh + install_linux_deps + env: + WITH_LUAJIT: 1 + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9" + + - name: Test + 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 + + + # Some builds doesn't require freetype, ensure it compiled properly + clang_9_no_freetype: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_FREETYPE=0" + + - name: Test + run: | + ./bin/minetest --run-unittests + + win32: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + wget http://minetest.kitsunemimi.pw/mingw-w64-i686_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz + sudo tar -xaf mingw.tar.xz -C /usr + + - name: Build + run: | + EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh winbuild + env: + NO_MINETEST_GAME: 1 + NO_PACKAGE: 1 + + win64: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz + sudo tar -xaf mingw.tar.xz -C /usr + + - name: Build + run: | + EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh winbuild + env: + NO_MINETEST_GAME: 1 + NO_PACKAGE: 1 diff --git a/.github/workflows/cpp_lint.yml b/.github/workflows/cpp_lint.yml new file mode 100644 index 000000000..3044d5186 --- /dev/null +++ b/.github/workflows/cpp_lint.yml @@ -0,0 +1,53 @@ +name: cpp_lint + +# lint on c/cpp changes or workflow changes +on: + push: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + pull_request: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + +jobs: + clang_format: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install clang-format + run: | + sudo apt-get install ${CLANG_FORMAT} -qyy + env: + CLANG_FORMAT: clang-format-9 + - name: Run clang-format + run: | + source ./util/ci/lint.sh + perform_lint + + clang_tidy: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install clang-tidy + run: | + sudo apt-get install clang-tidy-9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Run clang-tidy + run: | + ./util/ci/clang-tidy.sh diff --git a/.github/workflows/lua_lint.yml b/.github/workflows/lua_lint.yml new file mode 100644 index 000000000..1b2c01192 --- /dev/null +++ b/.github/workflows/lua_lint.yml @@ -0,0 +1,32 @@ +name: lua_lint + +# Lint on lua changes on builtin or if workflow changed +on: + push: + paths: + - 'builtin/**.lua' + - '.github/workflows/**.yml' + pull_request: + paths: + - 'builtin/**.lua' + - '.github/workflows/**.yml' + +jobs: + luacheck: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install luarocks + run: | + sudo apt-get update -qyy + sudo apt-get install luarocks -qyy + + - name: Install luarocks tools + run: | + luarocks install --local luacheck + luarocks install --local busted + + - name: Run checks + run: | + $HOME/.luarocks/bin/luacheck builtin + $HOME/.luarocks/bin/busted builtin -- cgit v1.2.3 From 00323e8fce28cb0620a20b7985c892101396c99e Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Mon, 27 Apr 2020 08:31:51 +0200 Subject: Add docker build stage on Github actions --- .github/workflows/build.yml | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to '.github/workflows') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d559b197..2c4d3abd1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -116,7 +116,31 @@ jobs: run: | valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests - + + clang_9_prometheus: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build prometheus-cpp + run: | + ./util/ci/build_prometheus_cpp.sh + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_PROMETHEUS=1" + + - name: Test + run: | + ./bin/minetest --run-unittests + # Some builds doesn't require freetype, ensure it compiled properly clang_9_no_freetype: runs-on: ubuntu-18.04 @@ -138,6 +162,14 @@ jobs: run: | ./bin/minetest --run-unittests + docker: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Build docker image + run: | + docker build . + win32: runs-on: ubuntu-18.04 steps: @@ -162,7 +194,7 @@ jobs: run: | wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz sudo tar -xaf mingw.tar.xz -C /usr - + - name: Build run: | EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh winbuild -- cgit v1.2.3 From 61d93988d8b44a9905451c4c288e02c04d41abb0 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 2 May 2020 12:52:51 +0200 Subject: ci: Update Github Actions workflows (#9774) --- .github/workflows/build.yml | 45 ++++++++++++++++++++++++++++-------------- .github/workflows/cpp_lint.yml | 9 +++++---- .github/workflows/lua_lint.yml | 2 +- util/ci/build.sh | 2 +- util/ci/clang-tidy.sh | 3 +-- util/ci/common.sh | 16 --------------- 6 files changed, 38 insertions(+), 39 deletions(-) (limited to '.github/workflows') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c4d3abd1..91ed8fd43 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install g++-6 gcc-6 -qyy source ./util/ci/common.sh @@ -41,7 +41,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6" + CC: gcc-6 + CXX: g++-6 - name: Test run: | @@ -52,7 +53,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install g++-8 gcc-8 -qyy source ./util/ci/common.sh @@ -62,7 +63,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8" + CC: gcc-8 + CXX: g++-8 - name: Test run: | @@ -73,7 +75,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-3.9 -qyy source ./util/ci/common.sh @@ -83,7 +85,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-3.9 -DCMAKE_CXX_COMPILER=clang++-3.9" + CC: clang-3.9 + CXX: clang++-3.9 - name: Test run: | @@ -94,7 +97,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-9 valgrind -qyy source ./util/ci/common.sh @@ -106,7 +109,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9" + CC: clang-9 + CXX: clang++-9 - name: Test run: | @@ -116,12 +120,13 @@ jobs: run: | valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests - + # Build with prometheus-cpp (server-only) clang_9_prometheus: + name: "clang_9 (PROMETHEUS=1)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-9 -qyy source ./util/ci/common.sh @@ -135,18 +140,21 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_PROMETHEUS=1" + CC: clang-9 + CXX: clang++-9 + CMAKE_FLAGS: "-DENABLE_PROMETHEUS=1 -DBUILD_CLIENT=0" - name: Test run: | - ./bin/minetest --run-unittests + ./bin/minetestserver --run-unittests - # Some builds doesn't require freetype, ensure it compiled properly + # Build without freetype (client-only) clang_9_no_freetype: + name: "clang_9 (FREETYPE=0)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-9 -qyy source ./util/ci/common.sh @@ -156,13 +164,16 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_FREETYPE=0" + CC: clang-9 + CXX: clang++-9 + CMAKE_FLAGS: "-DENABLE_FREETYPE=0 -DBUILD_SERVER=0" - name: Test run: | ./bin/minetest --run-unittests docker: + name: "Docker image" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 @@ -171,11 +182,13 @@ jobs: docker build . win32: + name: "MinGW cross-compiler (32-bit)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Install compiler run: | + sudo apt-get install gettext -qyy wget http://minetest.kitsunemimi.pw/mingw-w64-i686_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz sudo tar -xaf mingw.tar.xz -C /usr @@ -187,11 +200,13 @@ jobs: NO_PACKAGE: 1 win64: + name: "MinGW cross-compiler (64-bit)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Install compiler run: | + sudo apt-get install gettext -qyy wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz sudo tar -xaf mingw.tar.xz -C /usr diff --git a/.github/workflows/cpp_lint.yml b/.github/workflows/cpp_lint.yml index 3044d5186..1f97d105a 100644 --- a/.github/workflows/cpp_lint.yml +++ b/.github/workflows/cpp_lint.yml @@ -30,19 +30,20 @@ jobs: - uses: actions/checkout@v2 - name: Install clang-format run: | - sudo apt-get install ${CLANG_FORMAT} -qyy - env: - CLANG_FORMAT: clang-format-9 + sudo apt-get install clang-format-9 -qyy + - name: Run clang-format run: | source ./util/ci/lint.sh perform_lint + env: + CLANG_FORMAT: clang-format-9 clang_tidy: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install clang-tidy + - name: Install deps run: | sudo apt-get install clang-tidy-9 -qyy source ./util/ci/common.sh diff --git a/.github/workflows/lua_lint.yml b/.github/workflows/lua_lint.yml index 1b2c01192..738e5afff 100644 --- a/.github/workflows/lua_lint.yml +++ b/.github/workflows/lua_lint.yml @@ -13,12 +13,12 @@ on: jobs: luacheck: + name: "Builtin Luacheck and Unit Tests" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Install luarocks run: | - sudo apt-get update -qyy sudo apt-get install luarocks -qyy - name: Install luarocks tools diff --git a/util/ci/build.sh b/util/ci/build.sh index 59069b00a..ba77cd645 100755 --- a/util/ci/build.sh +++ b/util/ci/build.sh @@ -1,4 +1,4 @@ -#! /bin/bash -eu +#! /bin/bash -e mkdir cmakebuild cd cmakebuild diff --git a/util/ci/clang-tidy.sh b/util/ci/clang-tidy.sh index d048f54ee..bb4e99fef 100755 --- a/util/ci/clang-tidy.sh +++ b/util/ci/clang-tidy.sh @@ -5,8 +5,7 @@ cd cmakebuild cmake -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DRUN_IN_PLACE=TRUE \ - -DENABLE_GETTEXT=TRUE \ - -DENABLE_SOUND=FALSE \ + -DENABLE_{GETTEXT,SOUND}=FALSE \ -DBUILD_SERVER=TRUE .. make GenerateVersion diff --git a/util/ci/common.sh b/util/ci/common.sh index 5a4f78457..a2e4beac9 100644 --- a/util/ci/common.sh +++ b/util/ci/common.sh @@ -1,21 +1,5 @@ #!/bin/bash -e -set_linux_compiler_env() { - if [[ "${COMPILER}" == "gcc-6" ]]; then - export CC=gcc-6 - export CXX=g++-6 - elif [[ "${COMPILER}" == "gcc-8" ]]; then - export CC=gcc-8 - export CXX=g++-8 - elif [[ "${COMPILER}" == "clang-3.9" ]]; then - export CC=clang-3.9 - export CXX=clang++-3.9 - elif [[ "${COMPILER}" == "clang-9" ]]; then - export CC=clang-9 - export CXX=clang++-9 - fi -} - # Linux build only install_linux_deps() { local pkgs=(libirrlicht-dev cmake libbz2-dev libpng-dev \ -- cgit v1.2.3 From f34c62c47f525c54c8496d96140c8631d8fa5d47 Mon Sep 17 00:00:00 2001 From: adrido Date: Tue, 5 May 2020 08:42:55 +0200 Subject: Add MSVC build (#9740) * Add MSVC build --- .github/workflows/build.yml | 70 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to '.github/workflows') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91ed8fd43..4def50925 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -216,3 +216,73 @@ jobs: env: NO_MINETEST_GAME: 1 NO_PACKAGE: 1 + + msvc: + name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }} + runs-on: windows-2019 + env: + VCPKG_VERSION: c7ab9d3110813979a873b2dbac630a9ab79850dc +# 2020.04 + vcpkg_packages: irrlicht zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit + strategy: + fail-fast: false + matrix: + config: + - { + arch: x86, + generator: "-G'Visual Studio 16 2019' -A Win32", + vcpkg_triplet: x86-windows + } + - { + arch: x64, + generator: "-G'Visual Studio 16 2019' -A x64", + vcpkg_triplet: x64-windows + } + type: [portable] +# type: [portable, installer] +# The installer type is working, but disabled, to save runner jobs. +# Enable it, when working on the installer. + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Restore from cache and run vcpkg + uses: lukka/run-vcpkg@v2 + with: + vcpkgArguments: ${{env.vcpkg_packages}} + vcpkgDirectory: '${{ github.workspace }}\vcpkg' + appendedCacheKey: ${{ matrix.config.vcpkg_triplet }} + vcpkgGitCommitId: ${{ env.VCPKG_VERSION }} + vcpkgTriplet: ${{ matrix.config.vcpkg_triplet }} + + - name: CMake + run: | + cmake ${{matrix.config.generator}} ` + -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" ` + -DCMAKE_BUILD_TYPE=Release ` + -DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} . + + - name: Build + run: cmake --build . --config Release + + - name: CPack + run: | + If ($env:TYPE -eq "installer") + { + cpack -G WIX -B "$env:GITHUB_WORKSPACE\Package" + } + ElseIf($env:TYPE -eq "portable") + { + cpack -G ZIP -B "$env:GITHUB_WORKSPACE\Package" + } + env: + TYPE: ${{matrix.type}} + + - name: Package Clean + run: rm -r $env:GITHUB_WORKSPACE\Package\_CPack_Packages + + - uses: actions/upload-artifact@v1 + with: + name: msvc-${{ matrix.config.arch }}-${{ matrix.type }} + path: .\Package\ -- cgit v1.2.3 From d7a2113893c6ff3298d4d2cd592260d4102551c3 Mon Sep 17 00:00:00 2001 From: adrido Date: Mon, 22 Jun 2020 17:17:36 +0200 Subject: Disable pgsql in VS 2019 workflow --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) (limited to '.github/workflows') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4def50925..ae359f5d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -261,6 +261,7 @@ jobs: cmake ${{matrix.config.generator}} ` -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" ` -DCMAKE_BUILD_TYPE=Release ` + -DENABLE_POSTGRESQL=OFF ` -DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} . - name: Build -- cgit v1.2.3