name: linux-postgres-cxx20 on: - pull_request - push: branches: - 'main' env: VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" jobs: linux: strategy: fail-fast: false matrix: include: - compiler: llvm compiler-version: 16 - compiler: llvm compiler-version: 18 - compiler: gcc compiler-version: 11 additional-dep: "g++-11" - compiler: gcc compiler-version: 12 - compiler: gcc compiler-version: 14 name: "${{ github.job }} (${{ matrix.compiler }}-${{ matrix.compiler-version }})" runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Export GitHub Actions cache environment variables uses: actions/github-script@v7 with: script: | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - name: Setup ccache uses: hendrikmuhs/ccache-action@v1 with: key: "${{ github.job }}-${{ matrix.compiler }}-${{ matrix.compiler-version }}" max-size: "2G" - name: Run vcpkg uses: lukka/run-vcpkg@v11 - name: Install dependencies run: | sudo apt update sudo apt install -y ninja-build ${{ matrix.additional-dep }} - name: Compile run: | if [[ "${{ matrix.compiler }}" == "llvm" ]]; then export CC=clang-${{ matrix.compiler-version }} export CXX=clang++-${{ matrix.compiler-version }} elif [[ "${{ matrix.compiler }}" == "gcc" ]]; then export CC=gcc-${{ matrix.compiler-version }} export CXX=g++-${{ matrix.compiler-version }} fi sudo ln -s $(which ccache) /usr/local/bin/$CC sudo ln -s $(which ccache) /usr/local/bin/$CXX $CXX --version cmake -S . -B build -G Ninja -DCMAKE_CXX_STANDARD=20 -DSQLGEN_BUILD_TESTS=ON -DSQLGEN_SQLITE3=OFF cmake --build build - name: Set up postgres run: | sudo systemctl start postgresql.service sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'password';" - name: Run tests run: | ctest --test-dir build --output-on-failure