name: CI on: push: pull_request: schedule: # Weekly, at 6:45 AM on Thursday (somewhat randomly chosen). - cron: '45 6 * * 4' workflow_dispatch: env: PIP_DISABLE_PIP_VERSION_CHECK: 1 PIP_NO_PYTHON_VERSION_WARNING: 1 jobs: test: strategy: matrix: python-version: ['3.4', '3.5', '3.6', '3.7', '3.8', '3.9', '3.10'] # Random number to prevent exceeding the request frequency limit. max-parallel: 3 # 3.4 is not available on Focal. runs-on: ubuntu-18.04 name: 'Python ${{ matrix.python-version }}' steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '${{ matrix.python-version }}' - name: Install dependencies run: pip install -q -r requirements.txt - name: Run tests run: ./test/bin/main.sh publish_pypi: needs: [test] runs-on: ubuntu-latest name: Publish steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Verify package can be installed run: pip install -q . - name: Install package builder run: pip install -q --upgrade build - name: Build package run: python -m build - name: Publish as artifact uses: actions/upload-artifact@v3 with: name: dist path: dist if-no-files-found: error - name: Publish to PyPI if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: '${{ secrets.PYPI_API_TOKEN }}'