feat(bootstrap): FELIS_RELEASE 按指定 release 的附件安装,回滚文档不再把人带回最新版

This commit is contained in:
Lemon-miaow committed 2026-09-27 01:03:38 +08:00
1 parent 5c58104e09
commit aad72ddb2b
4 files changed
+107 -4

No files matched your search

+4
View File
@@ -110,6 +110,10 @@ Installing from the assets is **[VM-VERIFIED]** on CentOS Stream 9 aarch64 throu
`FELIS_ARTIFACT_DIR`: a fresh install and an upgrade over a release that built on the host
pulled no image and built nothing, and a rerun imported and uploaded nothing. Downloading them from a
release is [SH-TESTED] until a release publishes assets.
The release is the newest one unless `FELIS_RELEASE=<tag>` names an earlier one, which
installs from that release's assets the same way: the way back after a bad upgrade
(troubleshooting §16, "Roll back an upgrade that broke the database"), with the installer
read at that tag.
The installer builds on the host instead, installing Docker for it and stopping Docker once
the images are in the registry, when:
+22 -2
View File
@@ -2036,8 +2036,28 @@ kubectl -n felis scale deployment felis-api felis-operator --replicas=1
```
Do **not** run `felis migrate up` here: the host binary is already the new
release and would re-apply the migrations you are rolling back. Re-run the
older installer version to bring the host binary back in line.
release and would re-apply the migrations you are rolling back. Bring the host
back in line by installing the earlier release from its own assets, with the
installer read at that same tag (`v1.2.3` here):
```
curl -fsSL https://raw.githubusercontent.com/FelisMC/Felis/v1.2.3/deploy/bootstrap.sh \
| sudo FELIS_RELEASE=v1.2.3 bash
```
`FELIS_RELEASE` makes the installer install that release where it would
otherwise resolve the newest one, which would install the new release again and
re-apply its migrations. It is refused together with `FELIS_REF`,
`FELIS_ARTIFACT_DIR`, `FELIS_SKIP_FETCH` or `FELIS_VERSION_BOOTSTRAP=dev`, and
an unpublished tag stops the install before anything changes. [SH-TESTED]
- An installer older than `FELIS_RELEASE` ignores it and installs the newest.
`curl -fsSL <that URL> | grep -c FELIS_RELEASE` prints `0` for one of those;
run it with `FELIS_REF=v1.2.3` instead, which builds that tag from source
(slower, and it needs the build resources of §15c).
- While the repository is private, read the installer through the README's
token'd form with `?ref=v1.2.3` after `contents/deploy/bootstrap.sh`, and run
it as `sudo -E FELIS_RELEASE=v1.2.3 bash`.
### Whole-host disaster recovery: what comes back, and from where