name: Push Tests on: push: branches: main pull_request: branches: "*" env: JEST_ENV: prod CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: | git fetch --depth=1 origin +${{github.base_ref}} - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: 3.12 - name: Node cache uses: actions/cache@v4 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install dependencies now run: | pip install flake8 pip install black pip install setuptools - name: Install client dependencies run: | cd client npm install - name: Format with black and lint with flake8 run: | make lint-server - name: Lint src with eslint working-directory: ./client run: | npx eslint src __tests__ unit-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python 3.12 (pyenv) # pyenv needed for mlflow in cli annotate tests uses: gabrielfalcao/pyenv-action@v9 with: default: 3.12 command: pip install -U pip # upgrade pip after installing python - run: pip install virtualenv # virtualenv needed for mlflow in cli annotate tests - name: Python cache uses: actions/cache@v4 with: path: ~/.cache/pip 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: Install dependencies run: make pydist install-dist dev-env-server - name: Unit tests run: | make unit-test-server unit-test-client bash <(curl -s https://codecov.io/bash) -y .codecov.yml -k server -cF server,python,unitTest cd client && ./node_modules/codecov/bin/codecov --yml=../.codecov.yml --root=../ --gcov-root=../ -C -F frontend,javascript,unitTest smoke-tests: runs-on: macos-latest timeout-minutes: 20 steps: - uses: actions/checkout@v4 - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: 3.12 - name: Python cache uses: actions/cache@v4 with: path: ~/.cache/pip 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: Install dependencies run: make pydist install-dist - name: Smoke tests (without annotations feature) run: | cd client && make smoke-test ./node_modules/codecov/bin/codecov --yml=../.codecov.yml --root=../ --gcov-root=../ -C -F frontend,javascript,smokeTest # TODO: reinstate: https://github.com/chanzuckerberg/cellxgene/issues/2544 # smoke-tests-annotations: # runs-on: ubuntu-latest # timeout-minutes: 20 # steps: # - uses: actions/checkout@v2 # - name: Set up Python 3.9 # uses: actions/setup-python@v4 # with: # python-version: 3.9 # - name: Python cache # uses: actions/cache@v1 # with: # path: ~/.cache/pip # key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }} # restore-keys: | # ${{ runner.os }}-pip- # - name: Node cache # uses: actions/cache@v1 # with: # path: ~/.npm # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} # restore-keys: | # ${{ runner.os }}-node- # - name: Install dependencies # run: make pydist install-dist # - name: Smoke tests (with annotations feature) # run: | # cd client && make smoke-test-annotations # ./node_modules/codecov/bin/codecov --yml=../.codecov.yml --root=../ --gcov-root=../ -C -F frontend,javascript,smokeTestAnnotations