mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-15 20:57:56 +08:00
113 lines
4.3 KiB
YAML
113 lines
4.3 KiB
YAML
name: Compatibility Tests
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 8 7 * 2"
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
env:
|
|
JEST_ENV: prod
|
|
|
|
jobs:
|
|
docker-build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Build docker image
|
|
run: docker build .
|
|
|
|
matrix-compatibility-test:
|
|
name: cxg:${{ matrix.cellxgene_build }} os:${{ matrix.os }} py:${{ matrix.python-version }} anndata:${{ matrix.anndata_version || 'latest' }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, macos-13]
|
|
python-version: ["3.10", "3.11", "3.12"]
|
|
cellxgene_build: [main, latest]
|
|
# add anndata pinned version test for subset of matrix configurations,
|
|
# in order to reduce matrix cross-product explosion
|
|
include:
|
|
- python-version: 3.12
|
|
cellxgene_build: latest
|
|
# TODO: dynamically use the literal version in requirements.txt,
|
|
# to avoid having to update this in manually in the future
|
|
# TODO: Do not bother running this if anndata latest version
|
|
# matches this pinned version, to avoid a redundant test
|
|
anndata_version: "==0.10.9"
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Cache env vars
|
|
run: echo "PIP_CACHE=`python -m pip cache dir`" >> $GITHUB_ENV
|
|
- name: Cache env vars (MacOS)
|
|
if: startsWith(matrix.os, 'macos')
|
|
run: echo "BREW_CACHE=`brew --cache`" >> $GITHUB_ENV
|
|
# FIXME: Only working for Linux
|
|
- name: Python cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{ env.PIP_CACHE }}
|
|
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pip-
|
|
- name: Node cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.npm
|
|
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-node-
|
|
- name: Brew cache (MacOS)
|
|
if: startsWith(matrix.os, 'macos')
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{ env.BREW_CACHE }}
|
|
key: ${{ runner.os }}-brew-
|
|
- name: Install dependencies (Ubuntu Linux)
|
|
if: startsWith(matrix.os, 'ubuntu')
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libhdf5-serial-dev
|
|
- name: Install dependencies (MacOS)
|
|
if: startsWith(matrix.os, 'macos')
|
|
run: brew install hdf5
|
|
- name: Install cellxgene from `main` branch
|
|
if: matrix.cellxgene_build == 'main'
|
|
run: |
|
|
pip install -r server/requirements-dev.txt
|
|
make pydist install-dist
|
|
- name: Install cellxgene from latest release (pypi.org)
|
|
if: matrix.cellxgene_build == 'latest'
|
|
run: |
|
|
pip install --upgrade cellxgene
|
|
# install the additional dev requirements on top of what is in the
|
|
# cellxgene pip package, which are needed for testing, but otherwise
|
|
# keep same pip pkg versions as in the cxg release
|
|
sed -i'' -e 's/-r requirements.txt//' server/requirements-dev.txt
|
|
pip install -r server/requirements-dev.txt
|
|
pip install --force-reinstall numpy==2.0.1 numba>=0.60.0 pandas flatbuffers==2.0.7
|
|
- name: Install anndata version per matrix variable
|
|
run: pip install anndata${{ matrix.anndata_version }}
|
|
- name: Install node
|
|
run: make dev-env-client
|
|
# Run different types of test separately, to facilitate troubleshooting
|
|
- name: Unit Tests - client
|
|
run: make unit-test-client
|
|
- name: Unit Tests - server
|
|
run: make unit-test-server
|
|
- name: Smoke Tests
|
|
run: make smoke-test
|
|
# FIXME: Fails intermittently. See https://app.zenhub.com/workspaces/single-cell-5e2a191dad828d52cc78b028/issues/chanzuckerberg/cellxgene/2415
|
|
# - name: Smoke Tests with Annotations
|
|
# run: make smoke-test-annotations
|