@@ -33,104 +33,7 @@ where the bump label was forgotten.
3333
3434---
3535
36- ## Cutting v0.1.0 (initial release) — full runbook
37-
38- The first release is intentionally manual because ` auto ` needs a baseline
39- tag (` v0.1.0 ` ) to start counting PR labels from. After 0.1.0 the
40- label-driven workflow takes over.
41-
42- ### Step 0 — prerequisites (one-time, on the maintainer's machine)
43-
44- ``` bash
45- # Ensure local build tooling is available
46- pip install --upgrade build twine
47-
48- # Optional but recommended: install auto so you can dry-run locally
49- npm install -g auto # or use the binary download path from release.yml
50-
51- # Ensure your PyPI account has write access to the bids-utils project,
52- # OR that you have a project-scoped API token for it
53- ```
54-
55- ### Step 1 — merge the release-pipeline branch
56-
57- Merge the ` enh-auto-release ` PR (containing ` .autorc ` ,
58- ` .github/workflows/release.yml ` , ` CHANGELOG.md ` , ` RELEASING.md ` ,
59- CONTRIBUTING.md updates) into ` main ` . The first release CANNOT proceed
60- until this is on ` main ` , because ` release.yml ` and the ` auto ` config are
61- what wire everything together.
62-
63- ### Step 2 — create repo labels and the PyPI token (one-time, on GitHub side)
64-
65- ``` bash
66- # Create the auto release labels (major, minor, patch, release, ...)
67- GH_TOKEN=$( git config hub.oauthtoken) intuit-auto create-labels
68- ```
69-
70- Then on the GitHub web UI:
71-
72- 1 . Generate a project-scoped API token at
73- < https://pypi.org/manage/account/token/ > (scoped to ` bids-utils ` ).
74- 2 . Add it as repo secret ` PYPI_TOKEN ` under
75- * Settings → Secrets and variables → Actions* .
76-
77- If you prefer OIDC-based publishing without a long-lived token, see
78- "Optional: PyPI Trusted Publishing" below — equivalent end-state, just a
79- different setup.
80-
81- ### Step 3 — cut the tag and publish
82-
83- ``` bash
84- # 1. Make sure you're on main and clean
85- git checkout main
86- git pull --ff-only
87- git status # must be clean
88-
89- # 2. Run the full local test suite as a final gate
90- tox
91-
92- # 3. Sanity-check what hatch-vcs will produce AT the tag
93- # (without the tag, this shows a 0.1.devNN+gSHA dev version)
94- python -m build
95- ls dist/
96- rm -rf dist/ # discard the dev-version artifacts; we'll rebuild at the tag
97-
98- # 4. Tag v0.1.0 and push the tag
99- git tag -a v0.1.0 -m " v0.1.0"
100- git push origin v0.1.0
101-
102- # 5. Build the release artifacts from the tagged commit
103- python -m build
104- ls dist/
105- # Expect: bids_utils-0.1.0-py3-none-any.whl AND bids_utils-0.1.0.tar.gz
106-
107- # 6. (Optional but recommended) twine check before upload
108- twine check dist/*
109-
110- # 7. Upload to PyPI
111- twine upload dist/*
112- # When prompted:
113- # Username: __token__
114- # Password: <the project-scoped pypi token from Step 2>
115-
116- # 8. Create the GitHub release with the CHANGELOG entry as the body
117- gh release create v0.1.0 --title " v0.1.0" \
118- --notes " $( awk ' /^# v0\.1\.0/,/^---$/' CHANGELOG.md | sed ' $d' ) "
119- ```
120-
121- ### Step 4 — sanity-check the release
122-
123- ``` bash
124- # Verify the artifact is up on PyPI
125- pip index versions bids-utils
126-
127- # Verify a fresh install works
128- python -m venv /tmp/bids-utils-smoke && \
129- /tmp/bids-utils-smoke/bin/pip install bids-utils==0.1.0 && \
130- /tmp/bids-utils-smoke/bin/bids-utils --help
131- ```
132-
133- ### Step 5 — confirm the release.yml workflow is healthy
36+ ### Step 5 (TODO) — confirm the release.yml workflow is healthy
13437
13538After v0.1.0 is tagged, the next merge to ` main ` will trigger
13639` release.yml ` . If that merged PR has no ` release ` label, the workflow
0 commit comments