diff --git a/.gitea/workflows/publish.yml b/.gitea/workflows/publish.yml new file mode 100644 index 0000000..cd1f796 --- /dev/null +++ b/.gitea/workflows/publish.yml @@ -0,0 +1,45 @@ +name: Publish Python package to PyPI + +#on: +# push: +# tags: +# - "v*" +on: + release: + types: [published] + +jobs: + publish: + runs-on: self-hosted + + steps: + - name: Check out repository + uses: https://github.com/actions/checkout@v4 + + - name: Create virtual environment + run: python3 -m venv .venv + + - name: Install build tools + run: .venv/bin/pip install --upgrade build twine + + - name: Verify tag matches package version + run: | + TAG="${GITHUB_REF_NAME}" + VERSION="$(grep -m1 '^version = ' pyproject.toml | cut -d '"' -f2)" + if [ "$TAG" != "v$VERSION" ]; then + echo "::error::Tag ${TAG} does not match package version v${VERSION}" + exit 1 + fi + + - name: Build package + run: .venv/bin/python3 -m build + + - name: Check package + run: .venv/bin/python3 -m twine check dist/* + + - name: Publish to PyPI + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + TWINE_NON_INTERACTIVE: "1" + run: .venv/bin/python3 -m twine upload dist/* diff --git a/.github/workflows/python-publish.yml b/.github/workflows/publish.yml similarity index 100% rename from .github/workflows/python-publish.yml rename to .github/workflows/publish.yml