name: python tests+artifacts+release on: pull_request: push: branches: - master tags: - "v*" release: jobs: test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python_version: [ '2.7', '3.5', '3.6', '3.7', '3.8', 'pypy2', 'pypy3' ] os: [windows-latest, ubuntu-latest] #, macos-latest] exclude: - os: windows-latest python_version: "2.7" - os: windows-latest python_version: "pypy2" include: - os: ubuntu-latest python_version: '3.9-dev' name: ${{ matrix.os }} - Python ${{ matrix.python_version }} steps: - uses: actions/checkout@v1 - name: Setup python uses: actions/setup-python@v2 if: matrix.python_version != '3.9-dev' with: python-version: ${{ matrix.python_version }} architecture: x64 - name: Set up Python ${{ matrix.python_version }} (deadsnakes) uses: deadsnakes/action@v1.0.0 if: matrix.python_version == '3.9-dev' with: python-version: ${{ matrix.python_version }} architecture: x64 - run: pip install -U setuptools - run: pip install -e .[toml] pytest - run: pytest check_selfinstall: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python_version: [ '2.7', '3.5', '3.6', '3.7', '3.8', 'pypy2', 'pypy3' ] name: check self install - Python ${{ matrix.python_version }} steps: - uses: actions/checkout@v1 - name: Setup python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python_version }} architecture: x64 # self install testing needs some clarity # so its being executed without any other tools running - run: pip install -U setuptools jaraco.windows - run: python setup.py egg_info - run: python setup.py sdist - run: easy_install dist/* - run: python testing/check_self_install.py eggs: runs-on: ubuntu-latest needs: [test] name: Python ${{ matrix.python_version }} eggs strategy: matrix: python_version: ['2.7', '3.5', '3.6', '3.7', '3.8', '3.9-dev'] steps: - uses: actions/checkout@v1 - name: Setup python uses: actions/setup-python@v2 if: matrix.python_version != '3.9-dev' with: python-version: ${{ matrix.python_version }} architecture: x64 - name: Set up Python ${{ matrix.python_version }} (deadsnakes) uses: deadsnakes/action@v1.0.0 if: matrix.python_version == '3.9-dev' with: python-version: ${{ matrix.python_version }} architecture: x64 - name: Install dependencies run: | python -m pip install --upgrade pip pip install --upgrade wheel setuptools jaraco.windows - run: python setup.py egg_info - name: Build package run: python setup.py bdist_egg - uses: actions/upload-artifact@v2 with: name: dist path: dist dist: runs-on: ubuntu-latest needs: [test] name: Python bdist/wheel steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: python-version: "3.8" - name: Install dependencies run: | python -m pip install --upgrade pip pip install --upgrade wheel setuptools jaraco.windows - run: python setup.py egg_info - name: Build package run: python setup.py bdist_wheel sdist - uses: actions/upload-artifact@v2 with: name: dist path: dist dist_check: runs-on: ubuntu-latest needs: [eggs, dist] steps: - uses: actions/setup-python@v2 with: python-version: "3.8" - name: Install dependencies run: pip install twine - uses: actions/download-artifact@v2 with: name: dist path: dist - run: twine check dist/* dist_upload: runs-on: ubuntu-latest if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') needs: [dist_check] steps: - uses: actions/download-artifact@v2 with: name: dist path: dist - name: Publish package to PyPI uses: pypa/gh-action-pypi-publish@master with: user: __token__ password: ${{ secrets.pypi_token }}