diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a009cb26..1c17bab2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,10 +14,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: - - ubuntu-20.04 - python-version: - - 3.8 + os: ['ubuntu-20.04'] + python-version: ['3.8', '3.11'] targets: [ 'quality','main.test','docs' ] steps: @@ -30,14 +28,29 @@ jobs: - name: Start Container run: docker-compose -f .github/docker-compose-ci.yml up -d - - name: Install dependencies + - name: Install Python 3.11 + if: matrix.python-version == '3.11' + run: docker exec -t analytics_api_testing bash -c "apt-get update + && apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa -y + && apt-get update && apt-get install -y python3.11" + + - name: Create symbolic link for Python 3.11 + if: matrix.python-version == '3.11' + run: docker exec -t analytics_api_testing bash -c "ln -sf /usr/bin/python3.11 /usr/local/bin/python3" + + - name: Set TOXENV + id: set-toxenv run: | - pip install -r requirements/pip.txt - pip install -r requirements/ci.txt + if [[ ${{ matrix.python-version }} == '3.8' ]]; then + echo "::set-output name=toxenv::py38-django42" + elif [[ ${{ matrix.python-version }} == '3.11' ]]; then + echo "::set-output name=toxenv::py311-django42" + fi - name: Run Tests - run: docker exec -t analytics_api_testing bash -c "cd /edx/app/analytics_api/analytics_api/ - && export TOXENV=django42 && make test.requirements tox.requirements ${{ matrix.targets }}" + run: | + docker exec -t analytics_api_testing bash -c "cd /edx/app/analytics_api/analytics_api/ + && export TOXENV=${{ steps.set-toxenv.outputs.toxenv }} && make test.requirements tox.requirements ${{ matrix.targets }}" - name: Run Coverage if: matrix.python-version == '3.8' && matrix.targets=='main.test' diff --git a/tox.ini b/tox.ini index d188d1d4..a5bcb2c7 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] skipsdist = True -envlist = py38-django{42} +envlist = py{38, 311}-django{42} [testenv] passenv =