@@ -81,6 +81,49 @@ poe --help
81
81
- Themed MkDocs workflow with search and API documentation.
82
82
- Automatic GitHub release generation with release notes.
83
83
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
+
84
127
85
128
### Miscellaneous
86
129
- 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.
296
339
297
340
``` mermaid
298
341
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
311
373
```
312
374
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
+
313
382
## Things You Will Want to Change
314
383
315
384
This package is how I like things and it would be an unimaginable
0 commit comments