Skip to content
Snippets Groups Projects
build.yml 3.19 KiB
# vim:ts=2:sw=2:et:ai:sts=2
name: 'Build'

on:
  push:

jobs:
  # Build the RocksDB C library and cache the result.
  librocksdb:
    name: 'Build librocksdb'
    runs-on: ${{ matrix.os }}
    env:
      LIBROCKSDB_PATH: /opt/rocksdb-${{ matrix.rocksdb_ver }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        rocksdb_ver: ['v6.14.6', 'v6.11.4']

    steps:
      - uses: actions/cache@v2
        id: cache-librocksdb
        with:
          key: ${{ matrix.os }}-librocksdb-${{ matrix.rocksdb_ver }}
          path: ${{ env.LIBROCKSDB_PATH }}

      - name: 'Install dependencies'
        if: steps.cache-librocksdb.outputs.cache-hit != 'true'
        run: >
          sudo apt install -y libsnappy-dev libbz2-dev liblz4-dev libz-dev
          libgflags-dev libzstd-dev

      - name: 'Clone & build RocksDB ${{ matrix.rocksdb_ver }}'
        if: steps.cache-librocksdb.outputs.cache-hit != 'true'
        run: >
          git clone https://github.com/facebook/rocksdb --depth 1
          --branch ${{ matrix.rocksdb_ver }} ${{ env.LIBROCKSDB_PATH }} &&
          pushd ${{ env.LIBROCKSDB_PATH }} &&
          CXXFLAGS='-flto -Os -s' PORTABLE=1 make shared_lib -j 4 &&
          popd

  test:
    name: 'Build and test python-rocksdb'
    needs: librocksdb
    runs-on: ${{ matrix.os }}
    env:
      LIBROCKSDB_PATH: /opt/rocksdb-${{ matrix.rocksdb_ver }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        py_ver: ['3.7', '3.8', '3.9']
        rocksdb_ver: ['v6.14.6', 'v6.11.4']

    steps:
      - uses: actions/checkout@v2
        name: 'Checkout source repository'

      - uses: actions/setup-python@v2
        name: 'Set up Python ${{ matrix.py_ver }}'
        with:
          python-version: ${{ matrix.py_ver }}

      - name: 'Install C libraries'
        # XXX(Tina): The non-development versions are sufficient, but package
        # names are difficult to predict.
        run: >
          sudo apt install -y libsnappy-dev libbz2-dev liblz4-dev libz-dev
          libgflags-dev libzstd-dev

      # Recover the pre-built C library.
      - uses: actions/cache@v2