| name: Pip | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| - stable | |
| - v* | |
| release: | |
| types: | |
| - published | |
| jobs: | |
| # This builds the sdists and wheels and makes sure the files are exactly as | |
| # expected. Using Windows and Python 2.7, since that is often the most | |
| # challenging matrix element. | |
| test-packaging: | |
| name: 🐍 2.7 • 📦 tests • windows-latest | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: Setup 🐍 2.7 | |
| uses: actions/setup-python@v2 | |
| with: | |
| python-version: 2.7 | |
| - name: Prepare env | |
| run: python -m pip install -r tests/requirements.txt --prefer-binary | |
| - name: Python Packaging tests | |
| run: pytest tests/extra_python_package/ | |
| # This runs the packaging tests and also builds and saves the packages as | |
| # artifacts. | |
| packaging: | |
| name: 🐍 3.8 • 📦 & 📦 tests • ubuntu-latest | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: Setup 🐍 3.8 | |
| uses: actions/setup-python@v2 | |
| with: | |
| python-version: 3.8 | |
| - name: Prepare env | |
| run: python -m pip install -r tests/requirements.txt build twine --prefer-binary | |
| - name: Python Packaging tests | |
| run: pytest tests/extra_python_package/ | |
| - name: Build SDist and wheels | |
| run: | | |
| python -m build | |
| PYBIND11_GLOBAL_SDIST=1 python -m build | |
| - name: Check metadata | |
| run: twine check dist/* | |
| - name: Save standard package | |
| uses: actions/upload-artifact@v2 | |
| with: | |
| name: standard | |
| path: dist/pybind11-* | |
| - name: Save global package | |
| uses: actions/upload-artifact@v2 | |
| with: | |
| name: global | |
| path: dist/pybind11_global-* | |
| # When a GitHub release is made, upload the artifacts to PyPI | |
| upload: | |
| name: Upload to PyPI | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'release' && github.event.action == 'published' | |
| needs: [packaging] | |
| steps: | |
| - uses: actions/setup-python@v2 | |
| # Downloads all to directories matching the artifact names | |
| - uses: actions/download-artifact@v2 | |
| - name: Publish standard package | |
| uses: pypa/gh-action-pypi-publish@v1.4.1 | |
| with: | |
| password: ${{ secrets.pypi_password }} | |
| packages_dir: standard/ | |
| - name: Publish global package | |
| uses: pypa/gh-action-pypi-publish@v1.4.1 | |
| with: | |
| password: ${{ secrets.pypi_password_global }} | |
| packages_dir: global/ |