1
1
name : Release
2
2
3
- on : create
3
+ on :
4
+ release :
5
+ types : [published]
4
6
5
7
jobs :
6
- release :
7
- if : ${{ startsWith(github.ref, 'refs/heads/release/v') }}
8
+ package_and_release :
8
9
runs-on : ubuntu-latest
10
+ if : startsWith(github.ref, 'refs/tags/v')
9
11
steps :
10
12
- uses : actions/checkout@v3
11
- with :
12
- token : ${{ secrets.TOWNCRIER_TOKEN }}
13
- fetch-depth : 0
14
- submodules : true
15
-
16
- - name : Set up Python 3.10
13
+ - name : Set up Python 3.12
17
14
uses : actions/setup-python@v4
18
15
with :
19
- python-version : " 3.10"
20
-
21
- - name : Extract the tag
22
- id : vars
23
- run : |
24
- echo "::set-output name=tag::${GITHUB_REF##*/}"
25
-
26
- - name : Check tag validity
27
- env :
28
- VERSION : ${{ steps.vars.outputs.tag }}
29
- run : |
30
- grep "^v[[:digit:]]\.[[:digit:]]\.[[:digit:]]$" <<< "$VERSION" || (echo "Invalid version: '$VERSION'" && exit 42)
31
-
32
- - name : Install dependencies
33
- run : |
34
- sudo apt install pandoc
35
- python -m pip install --upgrade pip
36
- pip install tox bump2version
37
- pip install -e '.'
38
-
39
- - name : Check generated docs
40
- run : |
41
- tox -e check-docs
42
-
43
- - name : Bump the version
44
- # the part (patch) doesn't matter when supplying --new-version
45
- env :
46
- VERSION : ${{ steps.vars.outputs.tag }}
47
- run : |
48
- bump2version patch --no-commit --no-tag --verbose --new-version "${VERSION/v/}"
49
-
50
- - name : Commit version bump
51
- uses : stefanzweifel/git-auto-commit-action@v4
52
- with :
53
- file_pattern : .bumpversion.cfg
54
- commit_user_name : CI
55
- commit_message : ${{ format('[auto][ci skip] Release {0}', steps.vars.outputs.tag) }}
56
- tagging_message : ${{ steps.vars.outputs.tag }}
57
- skip_dirty_check : false
58
-
59
- # `Test` triggers `Deployment`
60
- # TODO(michalk8): can't find WD for `Test`
61
- - name : Invoke deployment workflow
62
- uses : benc-uk/workflow-dispatch@v1
16
+ python-version : " 3.12"
17
+ cache : pip
18
+ - name : Install build dependencies
19
+ run : python -m pip install --upgrade pip wheel twine build
20
+ - name : Build package
21
+ run : python -m build
22
+ - name : Check package
23
+ run : twine check --strict dist/*.whl
24
+ - name : Install hatch
25
+ run : pip install hatch
26
+ - name : Build project for distribution
27
+ run : hatch build
28
+ - name : Publish a Python distribution to PyPI
29
+ uses : pypa/gh-action-pypi-publish@release/v1
63
30
with :
64
- workflow : Deployment
65
- token : ${{ secrets.RELEASE_DISPATCH_TOKEN }}
66
- inputs : ' { "reason": "release" }'
31
+ password : ${{ secrets.PYPI_API_TOKEN }}
0 commit comments