Release: the beta path, tool and rehearsal
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 15/100
Research direction
Start with the open decisions in points 3 to 5, which need maintainer input before any code. The tool lives in scripts/release/ (release.jl, with tests in scripts/release/test/runtests.jl), and the recipe is recipes/release.md. Done means register-beta is idempotent and checked, with fixture tests, and the sandbox rehearsal runs beta then stable end to end.
Written by the indexing model from the issue text.
Description
Part of the epic on releases without a local agent. The beta path of the recipe has never been run end to end: this issue lists what is covered, what is not, and a way to rehearse it without polluting the real registry.
What is covered
- Version arithmetic (
REL1,REL2,REL3): unit tests and a property test over 2000 random histories of stables and betas inscripts/release/test/runtests.jl. - A local dry run on CTModels (a fake
0.21.2-betain a throwaway worktree, nothing pushed):release.jl gatechecks the suffix, the triple,REL1,CHG3,REL7, the encoding and the labels for a beta;release.jl status --version 0.21.2-betasays phase 0 and "it goes to ct-registry";release.jl registerrefuses a beta. ReleaseTagmarks a beta as a pre-release (documented indocs/workflows/release-tag.md).
What is not covered
- The registration in ct-registry has no tool. The recipe runs
LocalRegistryby hand from a shared environment with SSH access. It is not idempotent ("ensure"), not checked afterwards, and it cannot run in a workflow as it is. Needed: arelease.jl register-betathat (a) does nothing if ct-registry already holds the version, (b) registers from the merge commit, (c) checks that the registry holds the version at the tree of the tag.statusalready reads the registries to decide phase 8, so (c) can reuse it. - Credentials for ct-registry in a workflow.
LocalRegistrypushes to a private repository. Either a deploy key with write access (secretSSH_KEY), or the GitHub App of the epic installed on ct-registry (contents: write) with an HTTPS push. To verify thatLocalRegistry.registerworks with a token, not only SSH.statusandauditalso need to read ct-registry with the token of the workflow. - The changelog of the stable that follows betas. The tool counts the betas when it checks
REL1for a stable (the sections of the betas are read), but the registration comment and the GitHub release notes use the## [X.Y.Z]entry of the stable alone, andREL5wants notes since the previous stable. The recipe says past entries are never edited. So the entry of the stable must repeat what the betas brought, or the tool must build the notes from all the sections since the previous stable. A decision, and maybe a gate check (the stable entry covers the sections of the betas). - What the gate asks of a beta. The dry run showed
CHG2(the entry needs a### ✅ Compatibilitysubsection) andREL7(a change undersrc/,ext/,docs/) apply to a beta too. Probably right, but to confirm that it is wanted for a beta that only exists to test a dependent. - The documentation of a beta tag.
ReleaseTagruns the documentation workflow on the tag; whether a pre-release tag is deployed, and where (a folder per beta, or thedevone), is not documented. - A beta that must be replaced. A tag, a pre-release and a ct-registry entry are never reused (
REL2: a new triple). The recipe has no step for a beta found broken after the registration: the next beta is the only remedy; to write down. - The autonomous and the supervised modes for a beta. The checkpoints are the same minus the registration comment (there is none for a beta), so the supervised mode stops twice, not three times. The workflow of the epic must handle both.
Rehearse without polluting ct-registry
A beta leaves permanent traces: a tag, a pre-release, an entry in ct-registry, a consumed triple. Rehearse on a sandbox package (a throwaway repository with a trivial package and the standard callers) and a sandbox registry (a copy of ct-registry's structure), through the whole chain, beta then stable:
- the release tool on the sandbox (gate,
ready,merge,register-beta,status,audit); - the finish workflow of control-toolbox/CTActions#128, with the App and the Environments;
- the stable that follows the beta (the changelog and the notes of point 3).
This is also the integration test of the whole finish workflow, for both kinds, before the first real use.
Tasks
- Decide points 3 to 5; write them in
ct-conventions(changelog.md,release.md) and in the recipe. -
release.jl register-beta(idempotent, checked), with tests on fixtures. - Credentials for ct-registry in a workflow (key or App), and read access for
statusandaudit. - A sandbox package and registry; run beta then stable on them.
- Update
recipes/release.md(beta, modes) from what the rehearsal shows.
- Dominant language
- Julia
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 39m
- Merged PRs (30d)
- 45
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from control-toolbox/CTActions
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
control-toolbox/CTActions#139 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 52/100
control-toolbox/CTActions#133 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 18/100
control-toolbox/CTActions#131 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 12/100
control-toolbox/CTActions#130 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 8/100
control-toolbox/CTActions#129 · 1 comment ·
Maintainers usually reply within 1 day
All issues in control-toolbox/CTActions
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Add project: Typst_jll.jlPossibly taken @github-actions claimed this today. Openadd-project
Difficulty 1/5 Under an hour Newbie friendliness 76/100
YDX-2147483647/best-of-typst#590 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100