Add a release checklist, for internal use
Marco Ricci

Marco Ricci commited on 2025-06-21 15:33:13
Zeige 4 geänderte Dateien mit 59 Einfügungen und 0 Löschungen.

... ...
@@ -0,0 +1,56 @@
1
+Release checklist
2
+=================
3
+
4
+???+ info "translations"
5
+
6
+    1.  template: `python3 -m derivepassphrase._internals.cli_messages --template --set-version <VERSION> --set-build-time <DATE>`
7
+    2.  idempotence of template
8
+    3.  completeness: `msgmerge` on other `.po` files
9
+    4.  `en_US@DEBUG` translations: `--debug-translation`
10
+    5.  compile: `msgfmt`, then move output to the correct location, manually
11
+
12
+???+ info "wishlist"
13
+
14
+    1.  wishlist up to date?
15
+    2. `master` references correct `wishlist` commit-ID?
16
+
17
+???+ info "quality control"
18
+
19
+    1.  `ruff format` / `hatch fmt -f`
20
+    2.  `ruff check` / `hatch fmt -l`
21
+    3.  `mypy` / `hatch run types:check`
22
+    4.  `coverage -m pytest ...` / `hatch test -acpqr` (set `PYTHON_CPU_COUNT` and `HYPOTHESIS_PROFILE`)
23
+    5.  move coverage database to different filename
24
+
25
+???+ info "changelog"
26
+
27
+    1.  `hatch run docs:scriv collect --add --edit --version <VERSION>`
28
+    2.  fix header IDs, move & consolidate Markdown references at page bottom
29
+
30
+???+ info "bump version"
31
+
32
+    1.  `bump-my-version --current-version <OLD_VERSION> --new-version <NEW_VERSION>`
33
+    2.  check source, `pyproject.toml`, man pages & documentation
34
+
35
+???+ info "commit and tag"
36
+
37
+    1.  commit message: `Release <VERSION>`
38
+    2.  tag message: `Release derivepassphrase v<VERSION>`
39
+
40
+???+ info "update wishlist"
41
+
42
+    1.  new version on all applicable open bugs/wishes
43
+    2.  version marker for recently fixed bugs/wishes
44
+    3.  `master` should reference correct `wishlist` commit-ID yet again
45
+
46
+???+ info "build documentation"
47
+
48
+    1.  `pypi-insiders server start` and `pypi-insiders update`, then maybe `hatch env remove docs`
49
+    2.  `hatch run docs:mike deploy 0.x latest`
50
+
51
+???+ info "publish"
52
+
53
+    1.  publish to PyPI: `hatch clean && hatch build && hatch publish` (prepare credentials first)
54
+    2.  upload documentation: `git worktree add doctree documentation-tree`, `coverage html --show-context --data-file=<COVERAGE-FILE>` (if desired), `rsync -aR --delete-after html/./ <HOST>`, `git worktree remove doctree`
55
+    3.  publish source: `git push origin master wishlist documentation-tree`
56
+
... ...
@@ -133,6 +133,7 @@ draft_docs: |
133 133
   _future.md
134 134
   reference/derivepassphrase._internals.*
135 135
   reference/tests.*
136
+  _release_checklist.md
136 137
 
137 138
 markdown_extensions:
138 139
   - abbr
... ...
@@ -54,5 +54,6 @@ nav:
54 54
     - Upgrade notes: upgrade-notes.md
55 55
     - Python compatibility: pycompatibility.md
56 56
     - Future ideas: _future.md
57
+    - Release checklist: _release_checklist.md
57 58
   - Wishlist:
58 59
     - wishlist/index.md
... ...
@@ -4,6 +4,7 @@ draft_docs: |
4 4
   _future.md
5 5
   reference/derivepassphrase._internals.*
6 6
   reference/tests.*
7
+  _release_checklist.md
7 8
 not_in_nav: |
8 9
   changelog.d
9 10
   wishlist/*.md
10 11