-
Notifications
You must be signed in to change notification settings - Fork 0
81 lines (70 loc) · 2.77 KB
/
Copy pathpython-publish.yml
File metadata and controls
81 lines (70 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Upload Python Package
on:
release:
types: [published]
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: Apply release version
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
python - <<'EOF'
import os, re, pathlib
version = os.environ["RELEASE_TAG"].strip().lstrip("v").strip()
if not version or not version[0].isdigit():
raise SystemExit(f"Invalid release tag: {os.environ['RELEASE_TAG']!r}")
setup = pathlib.Path("setup.py")
setup.write_text(
re.sub(r'version="[^"]*"', f'version="{version}"', setup.read_text(encoding="utf-8"), count=1),
encoding="utf-8",
)
init = pathlib.Path("src/kelian/__init__.py")
text = init.read_text(encoding="utf-8")
text = re.sub(r'__version__ = "[^"]*"', f'__version__ = "{version}"', text, count=1)
text = re.sub(r'(Version:\s*\n\s*)[^\n]*', rf'\g<1>{version}', text, count=1)
init.write_text(text, encoding="utf-8")
print(f"Version set to {version}")
EOF
- name: Commit version bump
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add setup.py src/kelian/__init__.py
if git diff --cached --quiet; then
echo "No version change to commit"
else
git commit -m "chore: set version to ${RELEASE_TAG#v} [skip ci]"
git push origin "HEAD:${DEFAULT_BRANCH}"
# re-pointe le tag de la release sur le commit de bump
git tag -f "${RELEASE_TAG}" HEAD
git push -f origin "refs/tags/${RELEASE_TAG}"
fi
- name: Build package
run: python -m build
- name: Publish package
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}