--- name: Build and upload to PyPI permissions: contents: read on: workflow_dispatch: inputs: tag: description: tag to build required: true type: string testpypi: description: upload to Test PyPI type: boolean default: false pypi: description: upload to PyPI type: boolean default: false push: branches: - master - main - v*.x pull_request: branches: - master - main - v*.x jobs: pypi: name: Build and upload to PyPI runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 with: ref: ${{ inputs.tag || github.ref }} - name: Set up Python 3.10 uses: actions/setup-python@v4 with: python-version: "3.10" - name: "Update pip" run: python -m pip install --upgrade pip setuptools wheel - name: "Install 'build' and 'twine'" run: python -m pip install --upgrade build twine - name: "Run 'build'" run: "python -m build" - name: "Run twine check" run: "python -m twine check dist/*" - name: Publish distribution to Test PyPI uses: pypa/gh-action-pypi-publish@master with: password: ${{ secrets.TEST_PYPI_API_TOKEN }} repository_url: https://test.pypi.org/legacy/ if: inputs.testpypi || false - name: Publish distribution to PyPI uses: pypa/gh-action-pypi-publish@master with: password: ${{ secrets.PYPI_API_TOKEN }} if: inputs.pypi || false