Skip to content

Commit a6fe9a3

Browse files
committed
docs: Updated and added mermaid diagrams to describe release and development workflows
1 parent f0b7278 commit a6fe9a3

File tree

1 file changed

+81
-12
lines changed

1 file changed

+81
-12
lines changed

README.md

Lines changed: 81 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,49 @@ poe --help
8181
- Themed MkDocs workflow with search and API documentation.
8282
- Automatic GitHub release generation with release notes.
8383

84+
#### GitHub Actions Workflow
85+
86+
The template includes a comprehensive CI/CD pipeline triggered by semantic version tags:
87+
88+
```mermaid
89+
flowchart TD
90+
Tag[Tag v1.2.3 pushed] --> Extract[Get Python Versions<br/>from pyproject.toml]
91+
Extract --> Test[Test Matrix<br/>OS × Python versions]
92+
93+
Test --> |All tests pass| Build[Build Package<br/>uv build]
94+
Test --> |Tests fail| Fail[❌ Workflow fails]
95+
96+
Build --> Upload[Upload Artifacts<br/>dist/]
97+
98+
Upload --> Publish[Publish to PyPI<br/>Trusted Publishing]
99+
Upload --> Release[Create GitHub Release<br/>Auto-generated notes]
100+
101+
Publish --> |Success| DocsTrigger[Trigger Docs Deployment]
102+
Release --> |Success| DocsTrigger
103+
104+
DocsTrigger --> DocsDispatch[Repository Dispatch<br/>release-complete]
105+
DocsDispatch --> EnablePages[Enable GitHub Pages<br/>if needed]
106+
EnablePages --> DocsBuild[Build MkDocs<br/>Documentation]
107+
DocsBuild --> DocsDeploy[Deploy to<br/>GitHub Pages]
108+
109+
style Tag fill:#e1f5fe
110+
style Test fill:#fff3e0
111+
style Build fill:#f3e5f5
112+
style Publish fill:#e8f5e8
113+
style Release fill:#e8f5e8
114+
style DocsDeploy fill:#fff8e1
115+
style Fail fill:#ffebee
116+
```
117+
118+
**Workflow Features:**
119+
- **Dynamic Python Testing**: Automatically detects Python versions from `pyproject.toml`
120+
- **Matrix Testing**: Tests across multiple OS and Python combinations
121+
- **Trusted Publishing**: Secure PyPI publishing without API tokens
122+
- **Artifact Management**: Efficient sharing of build artifacts between jobs
123+
- **Auto-generated Releases**: Intelligent changelog and release notes generation
124+
- **Documentation Deployment**: Automatic MkDocs deployment to GitHub Pages
125+
- **Conditional Execution**: Only releases on proper semantic version tags
126+
84127

85128
### Miscellaneous
86129
- Configured to use [direnv][direnv] to automatically activate & deactivate venvs.
@@ -296,20 +339,46 @@ This is roughly how I write code and how I would use the generated package.
296339

297340
```mermaid
298341
flowchart TD
299-
Create((Create Project)) --> Edit[Edit Files]
300-
Edit --> |Add Bugs| Commit((Commit))
301-
Edit --> |Remove Bugs| Commit
302-
Commit -->|Not Done| Edit
303-
Commit --> |Breaking Features| Major[poe publish_major]
304-
Commit --> |Non-breaking Features| Minor[poe publish_minor]
305-
Commit --> |Bug Fixes| Patch[poe publish_patch]
306-
Major --> workflow[.github/workflows/release.yaml]
307-
Minor --> workflow
308-
Patch --> workflow
309-
workflow --> test[test package with pytest]
310-
test --> |succcess| publish[uv publishes project to PyPI]
342+
Create[Create Project<br/>cookiecutter template] --> Setup[Initial Setup<br/>uv sync, git init]
343+
Setup --> Edit[Edit Code<br/>Add features, fix bugs]
344+
345+
Edit --> QC[Quality Control<br/>poe qc]
346+
QC --> |Issues found| Fix[Fix Issues]
347+
Fix --> QC
348+
QC --> |All checks pass| Commit[Git Commit<br/>Local changes]
349+
350+
Commit --> Ready{Ready for<br/>Release?}
351+
Ready --> |No| Edit
352+
Ready --> |Yes| Version{Release Type?}
353+
354+
Version --> |Bug Fixes| Patch[poe publish_patch<br/>v1.0.1]
355+
Version --> |New Features| Minor[poe publish_minor<br/>v1.1.0]
356+
Version --> |Breaking Changes| Major[poe publish_major<br/>v2.0.0]
357+
358+
Patch --> Tag[Create Git Tag<br/>Push to GitHub]
359+
Minor --> Tag
360+
Major --> Tag
361+
362+
Tag --> CI[GitHub Actions<br/>CI/CD Pipeline]
363+
CI --> Success[✅ Published to PyPI<br/>📚 Docs Deployed<br/>🎉 GitHub Release]
364+
365+
Success --> Edit
366+
367+
style Create fill:#e1f5fe
368+
style QC fill:#fff3e0
369+
style Fix fill:#ffebee
370+
style Commit fill:#f3e5f5
371+
style Tag fill:#e8f5e8
372+
style Success fill:#e8f5e8
311373
```
312374

375+
**Workflow Features:**
376+
- **Quality First**: Built-in quality control with `poe qc` runs all checks
377+
- **Semantic Versioning**: Clear patch/minor/major release workflow
378+
- **Automated Publishing**: Push tags trigger complete CI/CD pipeline
379+
- **Integrated Testing**: Quality checks before every commit
380+
- **Documentation**: Auto-generated docs with every release
381+
313382
## Things You Will Want to Change
314383

315384
This package is how I like things and it would be an unimaginable

0 commit comments

Comments
 (0)