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 run: | pip install flake8 pip install black 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 - name: Generate server coverage XML run: coverage xml -o server/coverage.xml - name: Upload server coverage uses: codecov/codecov-action@v5 with: flags: server,python,unitTest files: ./server/coverage.xml fail_ci_if_error: false - name: Upload client coverage uses: codecov/codecov-action@v5 with: flags: frontend,javascript,unitTest files: ./client/coverage/lcov.info fail_ci_if_error: false 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: | pip install setuptools make pydist install-dist - name: Smoke tests (without annotations feature) run: cd client && make smoke-test # 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