Cuts the number of unit test checks from 64 down to 34 Also, we rename test contexts so that they're easier to read in GHA.
141 lines
4.5 KiB
YAML
141 lines
4.5 KiB
YAML
name: unit-tests-gh-hosted
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
- open-release/lilac.master
|
|
|
|
jobs:
|
|
run-test:
|
|
name: ${{ matrix.shard_name }}(py=${{ matrix.python-version }},dj=${{ matrix.django-version }},mongo=${{ matrix.mongo-version }})
|
|
if: (github.repository != 'openedx/edx-platform' && github.repository != 'edx/edx-platform-private') || (github.repository == 'openedx/edx-platform' && (startsWith(github.base_ref, 'open-release') == true))
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
python-version:
|
|
- "3.8"
|
|
- "3.11"
|
|
django-version:
|
|
- "pinned"
|
|
# When updating the shards, remember to make the same changes in
|
|
# .github/workflows/unit-tests.yml
|
|
shard_name:
|
|
- "lms-1"
|
|
- "lms-2"
|
|
- "lms-3"
|
|
- "lms-4"
|
|
- "lms-5"
|
|
- "lms-6"
|
|
- "openedx-1-with-lms"
|
|
- "openedx-2-with-lms"
|
|
- "openedx-1-with-cms"
|
|
- "openedx-2-with-cms"
|
|
- "cms-1"
|
|
- "cms-2"
|
|
- "common-with-lms"
|
|
- "common-with-cms"
|
|
- "xmodule-with-lms"
|
|
- "xmodule-with-cms"
|
|
mongo-version:
|
|
- "4.4"
|
|
- "7.0"
|
|
|
|
# We only need to test Mongo 4.4 for modules that directly interface with Mongo (that is: xmodule.modulestore)
|
|
exclude:
|
|
- mongo-version: "4.4"
|
|
include:
|
|
- shard_name: "xmodule-with-cms"
|
|
python-version: "3.11"
|
|
django-version: "pinned"
|
|
mongo-version: "4.4"
|
|
- shard_name: "xmodule-with-lms"
|
|
python-version: "3.11"
|
|
django-version: "pinned"
|
|
mongo-version: "4.4"
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install Required System Packages
|
|
run: sudo apt-get update && sudo apt-get install libxmlsec1-dev lynx
|
|
|
|
- name: Start MongoDB
|
|
uses: supercharge/mongodb-github-action@1.7.0
|
|
with:
|
|
mongodb-version: ${{ matrix.mongo-version}}
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Get pip cache dir
|
|
id: pip-cache-dir
|
|
run: |
|
|
echo "::set-output name=dir::$(pip cache dir)"
|
|
|
|
- name: Cache pip dependencies
|
|
id: cache-dependencies
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ steps.pip-cache-dir.outputs.dir }}
|
|
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/testing.txt') }}
|
|
restore-keys: ${{ runner.os }}-pip-
|
|
|
|
- name: Install Required Python Dependencies
|
|
env:
|
|
PIP_SRC: ${{ runner.temp }}
|
|
run: |
|
|
make test-requirements
|
|
if [[ "${{ matrix.django-version }}" != "pinned" ]]; then
|
|
pip install "django~=${{ matrix.django-version }}.0"
|
|
pip check # fail if this test-reqs/Django combination is broken
|
|
fi
|
|
|
|
- name: Setup and run tests
|
|
uses: ./.github/actions/unit-tests
|
|
|
|
collect-and-verify:
|
|
if: (github.repository != 'openedx/edx-platform' && github.repository != 'edx/edx-platform-private') || (github.repository == 'openedx/edx-platform' && (startsWith(github.base_ref, 'open-release') == true))
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
python-version: [ '3.11' ]
|
|
django-version:
|
|
- "pinned"
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install Required System Packages
|
|
run: sudo apt-get update && sudo apt-get install libxmlsec1-dev
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Get pip cache dir
|
|
id: pip-cache-dir
|
|
run: |
|
|
echo "::set-output name=dir::$(pip cache dir)"
|
|
|
|
- name: Cache pip dependencies
|
|
id: cache-dependencies
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ steps.pip-cache-dir.outputs.dir }}
|
|
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/testing.txt') }}
|
|
restore-keys: ${{ runner.os }}-pip-
|
|
|
|
- name: Install Required Python Dependencies
|
|
run: |
|
|
make test-requirements
|
|
if [[ "${{ matrix.django-version }}" != "pinned" ]]; then
|
|
pip install "django~=${{ matrix.django-version }}.0"
|
|
pip check # fail if this test-reqs/Django combination is broken
|
|
fi
|
|
|
|
- name: verify unit tests count
|
|
uses: ./.github/actions/verify-tests-count
|