CI: Decrease compilation times with Ccache #1116
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
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@v4 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
- 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@v4 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
- 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@v4 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
- name: Install deps | |
run: | | |
source ./util/ci/common.sh | |
install_linux_deps clang-7 llvm | |
- name: Build | |
run: | | |
./util/ci/build.sh | |
env: | |
CC: clang-7 | |
CXX: clang++-7 | |
CMAKE_FLAGS: '-DCMAKE_C_FLAGS="-fsanitize=address" -DCMAKE_CXX_FLAGS="-fsanitize=address"' | |
- name: Unittest | |
run: | | |
./bin/minetest --run-unittests | |
# Current clang version | |
clang_14: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
- name: Install deps | |
run: | | |
source ./util/ci/common.sh | |
install_linux_deps clang-14 lldb | |
- 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@v4 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }} | |
- 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@v4 | |
- name: Build docker image | |
run: | | |
docker build . -t minetest:latest | |
docker run --rm minetest:latest /usr/local/bin/minetestserver --version |