1+ name : Auto-bump version, release, and publish
2+
3+ on :
4+ push :
5+ branches :
6+ - Publish
7+
8+ permissions :
9+ contents : write
10+
11+ jobs :
12+ bump-release-publish :
13+ name : Auto-bump version and publish
14+ runs-on : ubuntu-latest
15+
16+ steps :
17+ - name : Check out repository
18+ uses : actions/checkout@v4
19+ with :
20+ fetch-depth : 0
21+
22+ - name : Set up Python
23+ uses : actions/setup-python@v5
24+ with :
25+ python-version : " 3.11"
26+
27+ - name : Install dependencies
28+ run : |
29+ python -m pip install --upgrade pip
30+ python -m pip install build twine toml
31+
32+ - name : Auto-increment version
33+ id : bump
34+ run : |
35+ python - << 'PY'
36+ import toml
37+ from pathlib import Path
38+
39+ path = Path("pyproject.toml")
40+ data = toml.loads(path.read_text())
41+
42+ version = data["project"]["version"]
43+
44+ major, minor, patch = version.split(".")
45+ patch = str(int(patch) + 1)
46+ new_version = ".".join([major, minor, patch])
47+
48+ data["project"]["version"] = new_version
49+
50+ path.write_text(toml.dumps(data))
51+
52+ print(f"Bumped version: {version} -> {new_version}")
53+
54+ # Export for later steps
55+ with open(Path("$GITHUB_OUTPUT"), "a") as f:
56+ f.write(f"new_version={new_version}\n")
57+ PY
58+
59+ - name : Commit updated version
60+ run : |
61+ git config user.name "github-actions"
62+ git config user.email "[email protected] " 63+ git add pyproject.toml
64+ git commit -m "Auto-bump version to ${{ steps.bump.outputs.new_version }}"
65+ git push
66+
67+ - name : Build distributions
68+ run : |
69+ python -m build
70+
71+ - name : Publish to PyPI
72+ env :
73+ TWINE_USERNAME : " __token__"
74+ TWINE_PASSWORD : ${{ secrets.PYPI_API_TOKEN }}
75+ run : |
76+ twine upload dist/*
77+
78+ - name : Create GitHub release
79+ uses : softprops/action-gh-release@v2
80+ with :
81+ tag_name : v${{ steps.bump.outputs.new_version }}
82+ name : nessus-plugin-hosts v${{ steps.bump.outputs.new_version }}
83+ generate_release_notes : true
84+ env :
85+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments