summaryrefslogtreecommitdiffstats
path: root/.github/workflows/python-publish.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/python-publish.yml')
-rw-r--r--.github/workflows/python-publish.yml66
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 }}