diff options
Diffstat (limited to '')
-rw-r--r-- | .github/workflows/python-publish.yml | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 0000000..09fef2f --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,66 @@ +name: Build and upload to PyPI + +on: + push: + branches: [ master ] + tags: + - '**' + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + build_sdist: + name: Build source distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Build sdist + run: pipx run build --sdist + + - uses: actions/upload-artifact@v3 + with: + path: dist/*.tar.gz + retention-days: 5 + + upload_test_pypi: + needs: [build_sdist] + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + steps: + - uses: actions/download-artifact@v3 + with: + name: artifact + path: dist + + - name: Publish package to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1.5 + with: + user: __token__ + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + repository_url: https://test.pypi.org/legacy/ + + upload_pypi: + needs: [build_sdist] + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + steps: + - name: Check if it is a release tag + id: check-tag + run: | + if [[ ${{ github.event.ref }} =~ ^refs/tags/v([0-9]+\.[0-9]+)(-rc[0-9]+)?$ ]]; then + echo ::set-output name=match::true + fi + - name: Download artifiact + uses: actions/download-artifact@v3 + if: steps.check-tag.outputs.match == 'true' + with: + name: artifact + path: dist + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1.5 + if: steps.check-tag.outputs.match == 'true' + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} |