Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efa76ce17b | ||
|
|
e2ec48f1db |
@@ -153,15 +153,54 @@ jobs:
|
|||||||
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
|
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
|
||||||
org.opencontainers.image.revision=${{ github.sha }}
|
org.opencontainers.image.revision=${{ github.sha }}
|
||||||
|
|
||||||
# Record the release as an annotated git tag so the next run computes the
|
# Record the release: write the computed version into pyproject.toml, then
|
||||||
# following version from it. This push does not re-trigger the workflow,
|
# commit and tag it, so the packaging metadata always matches the release
|
||||||
# which only listens on the main branch and pull requests.
|
# instead of drifting behind it. The version is derived from commit
|
||||||
- name: Tag the release
|
# messages and only known here, after the build, so it cannot be set by
|
||||||
|
# hand in the pull request that causes the release.
|
||||||
|
#
|
||||||
|
# Neither push re-triggers this workflow: it listens on main only for the
|
||||||
|
# image-affecting paths above, and pyproject.toml is not one of them. The
|
||||||
|
# chore(release) subject also produces no bump of its own on the next run.
|
||||||
|
- name: Record and tag the release
|
||||||
if: steps.version.outputs.release == 'true'
|
if: steps.version.outputs.release == 'true'
|
||||||
|
env:
|
||||||
|
VERSION: ${{ steps.version.outputs.version }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
v="v${{ steps.version.outputs.version }}"
|
|
||||||
|
python - "$VERSION" <<'PY'
|
||||||
|
import pathlib
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
version = sys.argv[1]
|
||||||
|
path = pathlib.Path("pyproject.toml")
|
||||||
|
text = path.read_text()
|
||||||
|
text, count = re.subn(
|
||||||
|
r'(?m)^version = ".*"$', f'version = "{version}"', text, count=1
|
||||||
|
)
|
||||||
|
if count != 1:
|
||||||
|
raise SystemExit("no version line found in pyproject.toml")
|
||||||
|
path.write_text(text)
|
||||||
|
PY
|
||||||
|
|
||||||
git config user.name "${{ github.actor }}"
|
git config user.name "${{ github.actor }}"
|
||||||
git config user.email "${{ github.actor }}@users.noreply.${REGISTRY}"
|
git config user.email "${{ github.actor }}@users.noreply.${REGISTRY}"
|
||||||
git tag -a "$v" -m "$v"
|
git add pyproject.toml
|
||||||
git push origin "$v"
|
|
||||||
|
# The file may already carry this version, in which case there is
|
||||||
|
# nothing to commit and `git commit` would fail the job after the
|
||||||
|
# image has already been pushed.
|
||||||
|
if git diff --cached --quiet; then
|
||||||
|
echo "pyproject.toml is already at ${VERSION}"
|
||||||
|
else
|
||||||
|
git commit -m "chore(release): v${VERSION}"
|
||||||
|
# Push the branch before the tag. If main has moved on and this push
|
||||||
|
# is rejected, the job fails without having left a tag pointing at a
|
||||||
|
# commit that is not on main.
|
||||||
|
git push origin "HEAD:${GITHUB_REF_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git tag -a "v${VERSION}" -m "v${VERSION}"
|
||||||
|
git push origin "v${VERSION}"
|
||||||
|
|||||||
+4
-1
@@ -4,7 +4,10 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "legacy-email-proxy"
|
name = "legacy-email-proxy"
|
||||||
version = "0.3.0"
|
# Written by the release job in .gitea/workflows/build-and-publish.yaml, which
|
||||||
|
# derives the version from conventional commits and tags the result. Do not
|
||||||
|
# edit by hand: a hand-set value is overwritten at the next release.
|
||||||
|
version = "0.4.0"
|
||||||
description = "Unauthenticated POP3/SMTP front end proxied to authenticated IMAPS/SMTPS backends"
|
description = "Unauthenticated POP3/SMTP front end proxied to authenticated IMAPS/SMTPS backends"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
|
|||||||
Reference in New Issue
Block a user