name: Release on: push: tags: - 'v*' jobs: release: runs-on: FreeBSD steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Python run: | python3 --version python3 -m ensurepip --upgrade - name: Install build tools run: | python3 -m venv .venv .venv/bin/pip install --upgrade pip .venv/bin/pip install build twine - name: Build package run: .venv/bin/python -m build - name: Extract version from tag id: get_version run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - name: Generate changelog id: changelog run: | PREV_TAG=$(git tag --sort=-version:refname | grep -v "^${GITHUB_REF#refs/tags/}$" | head -1) if [ -n "$PREV_TAG" ]; then CHANGELOG=$(git log --pretty=format:"- %s" "${PREV_TAG}..HEAD") else CHANGELOG="Initial release" fi # Write multiline to output { echo "CHANGELOG<> $GITHUB_OUTPUT - name: Upload to Gitea PyPI registry env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | .venv/bin/python3 -m twine upload --repository-url https://git.wrede.ca/api/packages/andreas/pypi dist/* - name: Create release uses: actions/gitea-release-action@v1 with: files: | dist/*.whl dist/*.tar.gz title: "Release ${{ steps.get_version.outputs.VERSION }}" body: "${{ steps.changelog.outputs.CHANGELOG }}"