name: CI on: [pull_request, push] jobs: #################### Unittests #################### unittest: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7,3.8,3.9,"3.10"] steps: - name: Install system packages run: sudo apt update && sudo apt-get install libcurl4-openssl-dev libssl-dev - name: Check out code from GitHub uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} id: python uses: actions/setup-python@main with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: pip install --upgrade pip setuptools wheel tox tox-docker - name: Run unittest run: tox -v -e ${{ matrix.python-version }}-linux-unit -- -v #################### Integration tests #################### integration: needs: [unittest] runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental }} strategy: fail-fast: false matrix: python-version: [3.8,3.9,"3.10"] experimental: [false] include: - python-version: pypy-3.9 experimental: true steps: - name: Install system packages run: sudo apt update && sudo apt-get install libcurl4-openssl-dev libssl-dev - name: Check out code from GitHub uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} id: python uses: actions/setup-python@main with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: pip install --upgrade pip setuptools wheel tox tox-docker # Tox fails if a Python versions contains a hyphen, this changes "pypy-3.9" to "pypy3.9". - name: Determine Python version run: echo PYTHON_VERSION=$(echo ${{ matrix.python-version }} | sed s/-//) >> $GITHUB_ENV - name: Run AMQP integration tests run: tox -v -e ${{ env.PYTHON_VERSION }}-linux-integration-py-amqp -- -v - name: Run redis integration tests run: tox -v -e ${{ env.PYTHON_VERSION }}-linux-integration-py-redis -- -v - name: Run MongoDB integration tests run: tox -v -e ${{ env.PYTHON_VERSION }}-linux-integration-py-mongodb -- -v - name: Run kafka integration tests if: ${{ env.PYTHON_VERSION != 'pypy3.9'}} run: tox -v -e ${{ env.PYTHON_VERSION }}-linux-integration-py-kafka -- -v #################### Linters and checkers #################### lint: needs: [unittest, integration] runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10"] steps: - name: Install system packages run: sudo apt update && sudo apt-get install libcurl4-openssl-dev libssl-dev - name: Check out code from GitHub uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} id: python uses: actions/setup-python@main with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: pip install --upgrade pip setuptools wheel tox tox-docker - name: Run flake8 run: tox -v -e flake8 -- -v - name: Run pydocstyle run: tox -v -e pydocstyle -- -v - name: Run apicheck run: tox -v -e apicheck -- -v - name: Run mypy run: tox -v -e mypy -- -v