mirror of
https://github.com/ether/etherpad-lite.git
synced 2026-07-17 16:47:05 +00:00
docs(release): document release procedure in AGENTS.MD; remove deprecated createRelease.sh (#7920)
* chore(release): remove deprecated bin/createRelease.sh This script has carried a "DEPRECATED since Etherpad 1.7.0 (2018-08-17), left here just for documentation" banner for years and is dead code: - It authenticates to the GitHub API with the `?access_token=` query parameter, which GitHub removed in 2021 — every API call (token check, branch merge, release publish) now fails outright. - It targets the old `ether/etherpad-lite` repo paths and calls `bin/buildForWindows.sh` / `make docs`, neither of which is how releases are built anymore. - Nothing references it (no workflow, script, or doc). The current release flow is the "Release etherpad" workflow (.github/workflows/release.yml) driving bin/release.ts, then the tag-push triggers handleRelease.yml + releaseEtherpad.yml. createRelease.sh only adds confusion, so remove it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(agents): document the release procedure and docs publishing Add a "Releasing" section to AGENTS.MD so maintainers have a single reference for cutting a release, instead of reverse-engineering it from bin/release.ts and the workflow files. Covers: - Prerequisites: the CHANGELOG `# X.Y.Z` guard, and the requirement that all four package.json files agree (release.ts reads the current version from src/package.json) — the desync that blocked the 3.3.0 release. - The one-dispatch flow: "Release etherpad" -> bin/release.ts -> tag push, and what the vX.Y.Z tag auto-triggers (handleRelease GitHub Release, docker, snap-publish), plus the separate manual npm publish dispatch. - Documentation: the two distinct kinds of doc work — per-PR doc/ updates in behaviour-change PRs, and the automated release-time versioned-docs publish into the ether.github.com sibling repo. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
b19ad89eb0
commit
53407f090d
2 changed files with 32 additions and 203 deletions
32
AGENTS.MD
32
AGENTS.MD
|
|
@ -211,6 +211,38 @@ pnpm run plugins ls # List installed
|
|||
### Settings
|
||||
Configured via `settings.json`. A template is available at `settings.json.template`. Environment variables can override any setting using `"${ENV_VAR}"` or `"${ENV_VAR:default_value}"`.
|
||||
|
||||
## Releasing
|
||||
|
||||
Releases are driven almost entirely by GitHub Actions. A maintainer dispatches **one** workflow; the version bump, tagging, GitHub Release, Docker images, and snap all cascade off the pushed tag. The npm publish is a separate manual dispatch.
|
||||
|
||||
### Prerequisites (check these before dispatching)
|
||||
- **A `# X.Y.Z` changelog section for the _target_ version must already be at the top of `CHANGELOG.md`.** `bin/release.ts` aborts with `No changelog record for X.Y.Z, please create changelog record` if it's missing. Write the section before dispatching.
|
||||
- **All four `package.json` files must agree on the current version:** root `package.json`, `src/package.json`, `admin/package.json`, `bin/package.json`. `release.ts` reads the *current* version from **`src/package.json`** and computes the next with `semver.inc(current, type)`. If the files are out of sync (e.g. one was hand-edited), the computed target is wrong and the changelog guard fails. *(This exact desync — `src`/`bin` left at 3.3.0 while root/admin were 3.2.0 — blocked the 3.3.0 release in June 2026.)*
|
||||
|
||||
### Cutting a release
|
||||
1. **Actions → "Release etherpad"** → Run workflow (`workflow_dispatch`), choose `patch` / `minor` / `major`. Cadence is monthly **minors** (3.0.0 → 3.1.0 → 3.2.0 → …); use `major` only for breaking changes.
|
||||
2. The **Prepare release** step runs `bin/release.ts`, which:
|
||||
- sanity-checks the tree (clean working dir, on `develop`, `develop`/`master` upstreams in sync, `../ether.github.com` cloned & clean on `master`);
|
||||
- bumps the version in all four `package.json` files;
|
||||
- commits `bump version`, merges `develop` → `master`, creates both `X.Y.Z` **and** `vX.Y.Z` tags, merges `master` back to `develop`;
|
||||
- builds and stages the versioned docs into the website repo (see **Documentation** below).
|
||||
3. The **Push after release** step (`bin/push-after-release.sh`) pushes `master`, `develop`, the tag, `--tags`, and the `ether.github.com` docs commit.
|
||||
4. The pushed **`vX.Y.Z` tag auto-triggers** three workflows:
|
||||
- `handleRelease.yml` → builds Etherpad, extracts the matching changelog section via `generateChangelog` (`bin/generateReleaseNotes.ts`), and publishes the **GitHub Release** (`make_latest: true`);
|
||||
- `docker.yml` → builds & pushes the Docker images;
|
||||
- `snap-publish.yml` → publishes the snap.
|
||||
5. **npm publish is a separate manual step:** dispatch **"releaseEtherpad.yaml"** (`workflow_dispatch`), which runs `npm publish --provenance --access public` via npm **OIDC trusted publishing**. It is *not* fired by the tag.
|
||||
|
||||
### Documentation
|
||||
|
||||
Two distinct things, both important:
|
||||
|
||||
**1. Per-PR doc updates — your responsibility in every behaviour-change PR.**
|
||||
The `doc/` workspace holds the user/admin/API docs (Markdown + AsciiDoc). Whenever a PR changes API responses, CLI flags, settings keys, hooks, or error formats, update the relevant files in `doc/` **in the same PR** — don't defer it to release time. The HTTP API reference is `doc/api/http_api.{md,adoc}` (keep both in sync). Preview locally with `pnpm run makeDocs`.
|
||||
|
||||
**2. Release-time versioned docs publishing — automated, no manual step.**
|
||||
During a release, `release.ts` runs `pnpm run makeDocs` (→ `bin/make_docs.ts`) to render `doc/` into `out/doc/`, then copies it into the sibling website repo at `../ether.github.com/public/doc/vX.Y.Z`, bumps that repo's version, and commits `X.Y.Z docs`; `push-after-release.sh` pushes it, publishing the versioned docs on etherpad.org. This requires `ether.github.com` checked out as a **sibling directory** — the **Release etherpad** workflow checks it out automatically. If you ever run `release.ts` by hand, clone it first: `cd .. && git clone git@github.com:ether/ether.github.com.git`.
|
||||
|
||||
## Monorepo Structure
|
||||
|
||||
This project uses pnpm workspaces. The workspaces are:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue