Skip to content

Refactor the Dockerfile + integrate qlever script #4199

Refactor the Dockerfile + integrate qlever script

Refactor the Dockerfile + integrate qlever script #4199

name: Native build with conan
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
merge_group:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build:
# The CMake configure and build commands are platform-agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
strategy:
fail-fast: false
matrix:
warnings: [ "-Wall -Wextra" ]
build-type: [Release]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Install dependencies
uses: ./.github/workflows/install-dependencies-ubuntu
with:
install-third-party-libraries: "false"
- name: Create build directory
run: mkdir ${{github.workspace}}/build
- name: Install and run conan
working-directory: ${{github.workspace}}/build
run: >
sudo pip3 install conan;
conan profile detect;
conan install .. -pr:b=default -of=. --build=missing ;
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build-type}} -DLOGLEVEL=DEBUG -DCMAKE_TOOLCHAIN_FILE="$(pwd)/build/conan_toolchain.cmake" -DADDITIONAL_COMPILER_FLAGS="${{matrix.warnings}}" -DUSE_PARALLEL=true -DRUN_EXPENSIVE_TESTS=false -DENABLE_EXPENSIVE_CHECKS=true
- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build-type}} -- -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/build/test
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: >
source ../conanrun.sh;
env CTEST_OUTPUT_ON_FAILURE=1 ctest -C ${{matrix.build-type}} .;
- name: Running and printing the benchmark examples.
working-directory: ${{github.workspace}}/build
run: >
source ./conanrun.sh;
benchmark/BenchmarkExamples -p;
# explicitly specify the binary directory for the E2E script via the `-d` option to also
# test that it works.
- name: E2E
run: >
source ${{github.workspace}}/build/conanrun.sh;
${{github.workspace}}/e2e/e2e.sh -d build