|
|
- # Copyright 2021 The LevelDB Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file. See the AUTHORS file for names of contributors.
-
- name: ci
- on: [push, pull_request]
-
- permissions:
- contents: read
-
- jobs:
- build-and-test:
- name: >-
- CI
- ${{ matrix.os }}
- ${{ matrix.compiler }}
- ${{ matrix.optimized && 'release' || 'debug' }}
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- compiler: [clang, gcc, msvc]
- os: [ubuntu-latest, macos-latest, windows-latest]
- optimized: [true, false]
- exclude:
- # MSVC only works on Windows.
- - os: ubuntu-latest
- compiler: msvc
- - os: macos-latest
- compiler: msvc
- # Not testing with GCC on macOS.
- - os: macos-latest
- compiler: gcc
- # Only testing with MSVC on Windows.
- - os: windows-latest
- compiler: clang
- - os: windows-latest
- compiler: gcc
- include:
- - compiler: clang
- CC: clang
- CXX: clang++
- - compiler: gcc
- CC: gcc
- CXX: g++
- - compiler: msvc
- CC:
- CXX:
-
- env:
- CMAKE_BUILD_DIR: ${{ github.workspace }}/build
- CMAKE_BUILD_TYPE: ${{ matrix.optimized && 'RelWithDebInfo' || 'Debug' }}
- CC: ${{ matrix.CC }}
- CXX: ${{ matrix.CXX }}
- BINARY_SUFFIX: ${{ startsWith(matrix.os, 'windows') && '.exe' || '' }}
- BINARY_PATH: >-
- ${{ format(
- startsWith(matrix.os, 'windows') && '{0}\build\{1}\' || '{0}/build/',
- github.workspace,
- matrix.optimized && 'RelWithDebInfo' || 'Debug') }}
-
- steps:
- - uses: actions/checkout@v2
- with:
- submodules: true
-
- - name: Install dependencies on Linux
- if: ${{ runner.os == 'Linux' }}
- # libgoogle-perftools-dev is temporarily removed from the package list
- # because it is currently broken on GitHub's Ubuntu 22.04.
- run: |
- sudo apt-get update
- sudo apt-get install libkyotocabinet-dev libsnappy-dev libsqlite3-dev
-
- - name: Generate build config
- run: >-
- cmake -S "${{ github.workspace }}" -B "${{ env.CMAKE_BUILD_DIR }}"
- -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }}
- -DCMAKE_INSTALL_PREFIX=${{ runner.temp }}/install_test/
-
- - name: Build
- run: >-
- cmake --build "${{ env.CMAKE_BUILD_DIR }}"
- --config "${{ env.CMAKE_BUILD_TYPE }}"
-
- - name: Run Tests
- working-directory: ${{ github.workspace }}/build
- run: ctest -C "${{ env.CMAKE_BUILD_TYPE }}" --verbose
-
- - name: Run LevelDB Benchmarks
- run: ${{ env.BINARY_PATH }}db_bench${{ env.BINARY_SUFFIX }}
-
- - name: Run SQLite Benchmarks
- if: ${{ runner.os != 'Windows' }}
- run: ${{ env.BINARY_PATH }}db_bench_sqlite3${{ env.BINARY_SUFFIX }}
-
- - name: Run Kyoto Cabinet Benchmarks
- if: ${{ runner.os == 'Linux' && matrix.compiler == 'clang' }}
- run: ${{ env.BINARY_PATH }}db_bench_tree_db${{ env.BINARY_SUFFIX }}
-
- - name: Test CMake installation
- run: cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target install
|