name: Build and Publish Release on: release: types: [published] jobs: build-and-publish: runs-on: ubuntu-latest steps: - name: Checkout code uses: https://git.hogertz.eu/actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd - name: Set up Python uses: https://git.hogertz.eu/actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c with: python-version: '3.13' - name: Install uv run: | curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.cargo/bin" >> $GITHUB_PATH - name: Extract version from release tag id: get_version run: | # Remove 'v' prefix if present (e.g., v1.0.0 -> 1.0.0) VERSION=${GITHUB_REF#refs/tags/} VERSION=${VERSION#v} echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Extracted version: $VERSION" - name: Update version in pyproject.toml run: | VERSION="${{ steps.get_version.outputs.version }}" sed -i "s/^version = .*/version = \"$VERSION\"/" pyproject.toml echo "Updated pyproject.toml to version $VERSION" cat pyproject.toml | grep "^version" - name: Install build dependencies run: | uv sync --extra build - name: Build package run: | uv run python -m build - name: Create .pypirc run: | cat > ~/.pypirc << EOF [distutils] index-servers = gitea [gitea] repository = https://git.hogertz.eu/api/packages/hendrik-hog/pypi username = ${{ secrets.USERNAME }} password = ${{ secrets.PAT }} EOF chmod 600 ~/.pypirc - name: Publish to Gitea PyPI run: | uv run python -m twine upload --repository gitea dist/* - name: Commit version update run: | git config --local user.email "action@gitea.local" git config --local user.name "Gitea Actions" git add pyproject.toml git diff --staged --quiet || git commit -m "chore: bump version to ${{ steps.get_version.outputs.version }}" git push origin HEAD:main || echo "No changes to push or push failed"