Skip to content

Commit c0c4a64

Browse files
committed
High-level description of the release workflow.
1 parent bf5bb91 commit c0c4a64

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

readme.md

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
11
# Workflows
22

3-
A central place where all my GitHub action worklows are defined.
3+
Maintaining project takes time. This repository contains workflows to automate most of the boring tasks.
44

5-
These are [reuseable workflows feature](https://docs.github.com/en/actions/learn-github-actions/reusing-workflows).
5+
These workflows are mostly used for Poetry-based Python CLI and their documentation, but not only. They're all [reuseable GitHub actions workflows](https://docs.github.com/en/actions/learn-github-actions/reusing-workflows).
66

77
Reasons for a centralized workflow repository:
88

99
- reuseability of course: no need to update dozens of repository where 95% of workflows are the same
1010
- centralize all dependencies pertaining to automation: think of the point-release of an action that triggers dependabot upgrade to all your repositories dependeing on it
1111

12+
## Release management
13+
14+
It turns out [Release Engineering is a full-time job, and full of edge-cases](https://blog.axo.dev/2023/02/cargo-dist).
15+
16+
Rust has [`cargo-dist`](https://github.com/axodotdev/cargo-dist). Go has... ? But there is no equivalent for Python.
17+
18+
So I made up a [`release.yaml` workflow](https://github.com/kdeldycke/workflows/blob/main/.github/workflows/release.yaml), which:
19+
1. Extracts project metadata from `pyproject.toml`
20+
1. Generates a build matrix of all commits / os / arch / CLI entry points
21+
1. Build Python wheel with Twine
22+
1. Compile binaries of all CLI with Nuitka
23+
1. Tag the release commit in Git
24+
1. Publish new version to PyPi
25+
1. Publish a GitHub release
26+
1. Attach and rename build artifacts to it
27+
1228
## Changelog
1329

1430
A [detailed changelog](changelog.md) is available.

0 commit comments

Comments
 (0)