Skip to content

Commit

Permalink
Update CI to use the source distribution
Browse files Browse the repository at this point in the history
This makes it possible to detect problems like a missing `.pxd` file.

Signed-off-by: Gus Monod <gmonod1@bloomberg.net>
  • Loading branch information
sarahmonod committed Oct 24, 2023
1 parent c91bd73 commit 0f6207a
Showing 1 changed file with 127 additions and 40 deletions.
167 changes: 127 additions & 40 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,34 @@
name: Tests

on:
push:
branches:
- main
pull_request:
branches:
- main
release:
types:
- published
schedule:
# At 12:00 on every day-of-month
- cron: "0 12 */1 * *"

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
COMDB2_DBNAME: mattdb
TIMEOUT: 30

jobs:
test:
name: Test suite
build_bloomberg_comdb2:
name: Build bloomberg-comdb2 from source
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- '3.12'
- '3.11'
- '3.10'
- '3.9'
- '3.8'
steps:
- name: Install dependencies
run: '
sudo apt-get install -qy
pkg-config
' # libcdb2api-dev is installed from source below
- uses: actions/checkout@v3
- name: Checkout comdb2 dependency
uses: actions/checkout@v3
- name: Checkout bloomberg-comdb2 repository
uses: actions/checkout@v4
with:
repository: bloomberg/comdb2
path: original_comdb2
- name: Build comdb2 from source
path: bloomberg-comdb2
- name: Install build dependencies
run: '
sudo apt-get update &&
sudo apt-get install -qy
Expand All @@ -55,15 +47,96 @@ jobs:
protobuf-c-compiler
tcl
uuid-dev
zlib1g-dev &&
zlib1g-dev
'
- name: Build from source
run: '
(
mkdir original_comdb2/build &&
cd original_comdb2/build &&
mkdir bloomberg-comdb2/build &&
cd bloomberg-comdb2/build &&
cmake .. &&
make &&
sudo make install
make
)
'
- name: Archive bloomberg-comdb2 repo with build artifacts
run: 'tar czvf bloomberg-comdb2.tar.gz bloomberg-comdb2/'
- name: Upload bloomberg-comdb2 repo with build artifacts
uses: actions/upload-artifact@v3
with:
name: bloomberg-comdb2
path: ./bloomberg-comdb2.tar.gz

build_sdist:
name: Build python-comdb2 source distribution
runs-on: ubuntu-latest
needs: [build_bloomberg_comdb2]
steps:
- name: Download bloomberg-comdb2 with build artifacts
uses: actions/download-artifact@v3
with:
name: bloomberg-comdb2
path: .
- name: Install bloomberg-comdb2
run: '
sudo apt-get install -qy
libevent-dev
liblz4-dev
libprotobuf-c-dev
libsqlite3-dev
libssl-dev
libunwind-dev
zlib1g-dev &&
tar xvf bloomberg-comdb2.tar.gz &&
(cd bloomberg-comdb2/build && sudo make install)
'
- uses: actions/checkout@v4
- name: 'Set up Python 3.8'
uses: actions/setup-python@v4 # note that this step overwrites the PKG_CONFIG_PATH variable
with:
python-version: '3.8' # the lowest version that we support in CI
- name: Build sdist
run: '
sudo apt-get install -qy pkg-config &&
PKG_CONFIG_PATH=/opt/bb/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
pipx run build --sdist
'
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: python-comdb2-sdist
path: dist/*.tar.gz

test:
name: Test suite
runs-on: ubuntu-latest
needs: [build_sdist]
strategy:
matrix:
python-version:
- '3.12'
- '3.11'
- '3.10'
- '3.9'
- '3.8'
steps:
- name: Download comdb2 repo with build artifacts
uses: actions/download-artifact@v3
with:
name: bloomberg-comdb2
path: .
- name: Install bloomberg-comdb2
run: '
sudo apt-get install -qy
libevent-dev
liblz4-dev
libprotobuf-c-dev
libsqlite3-dev
libssl-dev
libunwind-dev
zlib1g-dev &&
tar xvf bloomberg-comdb2.tar.gz &&
(cd bloomberg-comdb2/build && sudo make install)
'
- name: Start local comdb2 instance
run: '
sudo mkdir -p /opt/bb/share/schemas/$COMDB2_DBNAME &&
Expand All @@ -84,22 +157,36 @@ jobs:
fi;
done
'
- name: Creating tables
- name: Download python-comdb2 sdist
uses: actions/download-artifact@v3
with:
name: python-comdb2-sdist
path: dist
- name: Extract python-comdb2 sdist
run: '
(cd dist/ && tar xvf comdb2-*.tar.gz && rm comdb2-*.tar.gz) &&
mv dist/comdb2-* python-comdb2-sdist && rmdir dist
'
- name: Create tables
run: |
tables="$(cat tests/schemas/$COMDB2_DBNAME/table_constraint_order.txt)"
tables="$(cat python-comdb2-sdist/tests/schemas/$COMDB2_DBNAME/table_constraint_order.txt)"
for table_name in $tables
do
table_file="tests/schemas/$COMDB2_DBNAME/$table_name.csc2"
table_file="python-comdb2-sdist/tests/schemas/$COMDB2_DBNAME/$table_name.csc2"
echo "Creating $table_name from $table_file"
/opt/bb/bin/cdb2sql "$COMDB2_DBNAME" local "create table $table_name { $(cat $table_file) }"
done
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4 # note that this step overwrites the PKG_CONFIG_PATH variable
- name: Set up Python ${{matrix.python_version}}
uses: actions/setup-python@v4 # note that this step overwrites the PKG_CONFIG_PATH variable
with:
python-version: ${{ matrix.python-version }}
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
PKG_CONFIG_PATH=/opt/bb/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig LDFLAGS="-Wl,-rpath,/opt/bb/lib" python -m pip install .[tests]
python-version: "${{matrix.python_version}}"
- name: Install python-comdb2 from the sdist
run: '
sudo apt-get install -qy pkg-config &&
python -m pip install --upgrade pip &&
PKG_CONFIG_PATH=/opt/bb/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
LDFLAGS="-Wl,-rpath,/opt/bb/lib"
python -m pip install ./python-comdb2-sdist[tests]
'
- name: Run Tests
run: (cd tests && python -m pytest -vvv)
run: (cd python-comdb2-sdist/tests && python -m pytest -vvv)

0 comments on commit 0f6207a

Please sign in to comment.