name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI on: push: branches: - pyproject.toml # test branch for testing the workflow tags: - v* # Push tags to trigger the workflow workflow_dispatch: inputs: test: description: "Push to TestPyPI not PyPI" default: true type: boolean jobs: uses: actions/checkout@v4 Build-and-publish-to-Test-PyPI: if: ${{ !(startsWith(github.ref, 'refs/tags')) || (inputs.test == true) }} uses: JRubics/poetry-publish@v2.0 with: plugins: "poetry-dynamic-versioning" repository_name: "scraibe" repository_url: "https://test.pypi.org/legacy/" test-install: name: Test Installation from TestPyPI needs: Build-and-publish-to-Test-PyPI runs-on: ubuntu-latest steps: - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" - name: Install package run: | python3 -m pip install setuptools python3 -m pip install --index-url https://test.pypi.org/simple/ scraibe publish-to-pypi: name: Conditional Publish to PyPI or Dev Repository needs: [build, test-install] runs-on: ubuntu-latest environment: name: pypi url: env.PyPI_URL permissions: id-token: write steps: - name: Download all the dists uses: actions/download-artifact@v3 with: name: python-package-distributions path: dist/ - name: Publish distribution 📦 to PyPI or Dev Repository uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: ${{ github.ref == 'refs/heads/main' && 'env.PyPI_URL' || ' env.PyPI_DEV_URL' }} password: ${{ secrets.PYPI_API_TOKEN}}