docs(releasing): first-time pipeline readiness checklist
- states plainly what does NOT trigger it: builds run on a GitHub-hosted runner, not locally, and only on a `v*` tag push — pushing master releases nothing - 14 numbered steps: get the workflow onto GitHub, enable Actions, allow ocaml/setup-ocaml, the 403/workflow-permissions fallback, a --draft rehearsal on a throwaway tag, cleanup, then the real tag - calls out that the rehearsal tag is EXPECTED to fail the tag/VERSION guard, and how to rehearse the full job instead - step 8/9: read the runner's glibc floor and reconcile install/view.wo with it — the runner, not the dev machine, decides who can run the release - lists the three likely first-run failures Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
463f897e5f
commit
a705622f4a
1 changed files with 70 additions and 0 deletions
|
|
@ -28,6 +28,76 @@ rotate or leak. Skip to *Releasing from the pipeline* below.
|
||||||
**Manual.** Everything from §0 onward — the path for a first release, or
|
**Manual.** Everything from §0 onward — the path for a first release, or
|
||||||
when the pipeline is broken and you need to ship anyway.
|
when the pipeline is broken and you need to ship anyway.
|
||||||
|
|
||||||
|
## Making the pipeline ready (first time only)
|
||||||
|
|
||||||
|
It does **not** build on your machine, and pushing to `master` does not
|
||||||
|
release anything. The job runs on a GitHub-hosted runner, and only a
|
||||||
|
`v*` TAG push starts it. Ordinary commits, PRs and branch pushes are
|
||||||
|
ignored by this workflow.
|
||||||
|
|
||||||
|
```
|
||||||
|
1 Get the workflow onto GitHub — Actions only sees files in the repo.
|
||||||
|
git checkout master
|
||||||
|
git merge site-homepage # or open a PR and merge it
|
||||||
|
git push origin master
|
||||||
|
|
||||||
|
2 Repo -> Actions tab. If it offers to enable workflows, enable them.
|
||||||
|
|
||||||
|
3 Repo -> Settings -> Actions -> General -> "Allow actions":
|
||||||
|
must permit actions/checkout and ocaml/setup-ocaml.
|
||||||
|
On "Allow select actions", add: ocaml/setup-ocaml@*
|
||||||
|
|
||||||
|
4 Same page -> "Workflow permissions". The workflow asks for
|
||||||
|
contents: write explicitly, which is normally enough. If the
|
||||||
|
publish step later fails with 403, come back and select
|
||||||
|
"Read and write permissions".
|
||||||
|
|
||||||
|
5 REHEARSE before a real tag. Add --draft to the gh release create
|
||||||
|
line in .github/workflows/release.yml, commit, push.
|
||||||
|
|
||||||
|
6 Fire it with a throwaway tag:
|
||||||
|
git tag -a v0.0.0-test -m "pipeline rehearsal"
|
||||||
|
git push origin v0.0.0-test
|
||||||
|
Note: the tag guard compares the tag to VERSION, so this run is
|
||||||
|
EXPECTED to fail at step "Tag must match VERSION". That is the
|
||||||
|
cheapest proof the guard works. To rehearse the whole job, set
|
||||||
|
VERSION to 0.0.0-test on a scratch branch and tag that instead.
|
||||||
|
|
||||||
|
7 Watch it: Actions tab, or `gh run watch` once gh is authenticated.
|
||||||
|
|
||||||
|
8 Read the "Report the glibc floor" step. It prints what the
|
||||||
|
RUNNER-built binaries actually require. Expect 2.35-ish from
|
||||||
|
ubuntu-22.04, versus 2.38 from this dev machine.
|
||||||
|
|
||||||
|
9 Update docs/examples/site/install/view.wo's supported-systems list
|
||||||
|
to whatever step 8 printed, and the distros that follow from it.
|
||||||
|
Publishing binaries whose floor differs from the page is the one
|
||||||
|
failure a user cannot debug.
|
||||||
|
|
||||||
|
10 Clean up the rehearsal:
|
||||||
|
gh release delete v0.0.0-test --yes
|
||||||
|
git push origin :refs/tags/v0.0.0-test
|
||||||
|
git tag -d v0.0.0-test
|
||||||
|
|
||||||
|
11 Remove --draft, commit, push.
|
||||||
|
|
||||||
|
12 Ship for real:
|
||||||
|
git tag -a v0.1.0 -m "writeonce 0.1.0"
|
||||||
|
git push origin v0.1.0
|
||||||
|
|
||||||
|
13 Verify the link a stranger clicks (should print 200):
|
||||||
|
curl -sIL -o /dev/null -w '%{http_code}\n' \
|
||||||
|
https://github.com/shoneyj/writeonce/releases/download/v0.1.0/writeonce-0.1.0-linux-amd64.tar.gz
|
||||||
|
|
||||||
|
14 Refresh the site's mirror from $WO_DIST (section 7 below).
|
||||||
|
```
|
||||||
|
|
||||||
|
Known first-run risks, in the order they are likely to bite:
|
||||||
|
`ocaml/setup-ocaml@v3` resolving OCaml 4.14 on the 22.04 image; the
|
||||||
|
`objdump` in the glibc-floor step needing `binutils` (present on GitHub
|
||||||
|
runners, absent in slim containers); and a 403 on publish, which is
|
||||||
|
step 4.
|
||||||
|
|
||||||
## Releasing from the pipeline
|
## Releasing from the pipeline
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue