| 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/ |