chore(release): archive ISO build recipes, tarball-only releases

Releases no longer ship as bootable ISOs. Archipelago updates are
distributed as the backend binary plus a frontend tarball referenced by
releases/manifest.json. Nodes OTA-update via scripts/self-update.sh.

Filebrowser and AIUI remain bundled inside the frontend tarball and
deployed atomically, verified present in v1.7.43-alpha release artifact
(189 AIUI files, filebrowser-client bundle).

Archived under image-recipe/_archived/ (resurrectable if ISO distribution
is reintroduced):
  - build-auto-installer-iso.sh
  - build-unbundled-iso.sh
  - test-iso-qemu.sh
  - scripts/convert-iso-to-disk.sh
  - BUILD-ISO-STATUS.md, ISO-BUILD-CHECKLIST.md
  - branding/isohdpfx.bin
  - .gitea/workflows/build-iso-dev.yml

Updated release process docs to drop ISO references:
  - scripts/create-release.sh (next-steps text)
  - docs/BETA-RELEASE-CHECKLIST.md
  - docs/hotfix-process.md
  - README.md
This commit is contained in:
archipelago
2026-04-23 15:36:00 -04:00
parent 4ece2c1e7e
commit 83aacdf209
13 changed files with 58 additions and 16 deletions

View File

@@ -101,14 +101,20 @@ npm run build # Production build → web/dist/neode-ui/
./scripts/deploy-to-target.sh --both # Deploy to both LAN servers ./scripts/deploy-to-target.sh --both # Deploy to both LAN servers
``` ```
### Build ISO ### Release (tarball-only)
Releases ship as a backend binary and a frontend tarball referenced by
`releases/manifest.json`. Nodes OTA-update via `scripts/self-update.sh`.
```bash ```bash
ssh archipelago@<server> ./scripts/create-release.sh 1.2.3
cd ~/archy/image-recipe git push gitea-local main --tags
sudo ./build-auto-installer-iso.sh git push gitea-vps2 main --tags
``` ```
ISO builds are archived under `image-recipe/_archived/` and not part of the
release deliverable.
## Architecture ## Architecture
``` ```

View File

@@ -20,7 +20,6 @@
- [ ] `core/security/src/secrets_manager.rs` — encryption + rotation - [ ] `core/security/src/secrets_manager.rs` — encryption + rotation
- [ ] `neode-ui/src/views/Marketplace.vue` — all app entries with pinned image versions - [ ] `neode-ui/src/views/Marketplace.vue` — all app entries with pinned image versions
- [ ] `neode-ui/src/api/websocket.ts` — heartbeat + reconnection - [ ] `neode-ui/src/api/websocket.ts` — heartbeat + reconnection
- [ ] `image-recipe/build-auto-installer-iso.sh` — all container images captured
- [ ] `image-recipe/configs/nginx-archipelago.conf` — all app proxies + path traversal blocks - [ ] `image-recipe/configs/nginx-archipelago.conf` — all app proxies + path traversal blocks
- [ ] All app icons present in `neode-ui/public/assets/img/app-icons/` - [ ] All app icons present in `neode-ui/public/assets/img/app-icons/`

View File

@@ -28,9 +28,8 @@ For critical bugs discovered after v1.0.0 release.
### 3. Release ### 3. Release
- Merge hotfix branch to `main` - Merge hotfix branch to `main`
- Tag: `v1.0.1` (increment patch version) - Tag: `v1.0.1` (increment patch version)
- Build ISO if needed: `sudo ./image-recipe/build-auto-installer-iso.sh` - Update release manifest for OTA updates (`releases/manifest.json`)
- Update release manifest for OTA updates - Push to both Gitea mirrors so nodes can pull via `self-update.sh`
- Copy ISO to FileBrowser Builds folder
### 4. Communicate ### 4. Communicate
- Update RELEASE-NOTES with hotfix details - Update RELEASE-NOTES with hotfix details
@@ -45,6 +44,6 @@ For critical bugs discovered after v1.0.0 release.
## Rollback ## Rollback
If a hotfix causes regressions: If a hotfix causes regressions:
1. OTA system supports rollback to previous version 1. OTA system supports rollback to previous version (`scripts/self-update.sh --rollback`)
2. Users can reflash with previous ISO (app data preserved on separate partition) 2. Point `releases/manifest.json` back at the last-known-good version and push to mirrors
3. Backend binary backup at `/usr/local/bin/archipelago.bak` 3. Backend binary backup at `/usr/local/bin/archipelago.bak`

View File

@@ -0,0 +1,37 @@
# Archived ISO build recipes
These scripts built the Archipelago auto-installer ISO (bundled and
unbundled variants). As of v1.7.43-alpha, ISOs are no longer part of the
release deliverable. Releases ship as tarballs consumed by
`scripts/self-update.sh` on existing nodes.
Archived here rather than deleted so they can be resurrected if ISO
distribution is reintroduced.
## Contents
- `build-auto-installer-iso.sh` — orchestrator, bundles container images into squashfs
- `build-unbundled-iso.sh` — thin wrapper that sets BUNDLE_IMAGES=0 and delegates
- `test-iso-qemu.sh` — smoke-tests a built ISO under QEMU
- `scripts/convert-iso-to-disk.sh` — converts an ISO to a raw disk image
- `BUILD-ISO-STATUS.md`, `ISO-BUILD-CHECKLIST.md` — contributor guides
- `branding/isohdpfx.bin` — isolinux MBR hybrid image
- `.gitea-workflows/build-iso-dev.yml` — CI workflow that ran the build+smoke-test
## To resurrect
1. `git mv image-recipe/_archived/* image-recipe/` (adjust paths back)
2. Restore `.gitea/workflows/build-iso-dev.yml`
3. Re-add release-process references (see `scripts/create-release.sh`,
`docs/BETA-RELEASE-CHECKLIST.md`, `docs/hotfix-process.md`, `README.md`).
## Why archived
The release flow is simpler and faster as tarball-only:
- `releases/vX.Y.Z-alpha/archipelago` (backend binary)
- `releases/vX.Y.Z-alpha/archipelago-frontend-X.Y.Z-alpha.tar.gz` (frontend + AIUI + filebrowser UI assets)
- `releases/manifest.json` (pointers + changelog)
Nodes pull these via `scripts/self-update.sh` from either Gitea mirror.
Filebrowser and AIUI remain bundled inside the frontend tarball and deployed
atomically by `self-update.sh`.

View File

@@ -8,8 +8,8 @@
# ./scripts/create-release.sh 1.0.0 # Release v1.0.0 # ./scripts/create-release.sh 1.0.0 # Release v1.0.0
# ./scripts/create-release.sh 1.0.0 --dry-run # Preview without changes # ./scripts/create-release.sh 1.0.0 --dry-run # Preview without changes
# #
# ISO builds must be done on the target server separately: # Releases are tarball-only. ISO builds are archived under
# ssh archipelago@192.168.1.228 'cd ~/archy/image-recipe && sudo ./build-auto-installer-iso.sh' # image-recipe/_archived/. Nodes OTA-update from releases/manifest.json.
set -euo pipefail set -euo pipefail
@@ -188,7 +188,8 @@ echo " - Git tag: v${VERSION}"
echo "" echo ""
echo "Next steps:" echo "Next steps:"
echo " 1. Review: git log --oneline -5" echo " 1. Review: git log --oneline -5"
echo " 2. Push: git push && git push --tags" echo " 2. Push to gitea-local and gitea-vps2:"
echo " 3. Build ISOs on server:" echo " git push gitea-local main --tags && git push gitea-vps2 main --tags"
echo " ssh archipelago@192.168.1.228 'cd ~/archy/image-recipe && sudo ./build-auto-installer-iso.sh'" echo " 3. Verify manifest is live on both mirrors:"
echo " 4. Upload ISOs and manifest to distribution server" echo " curl -fsS http://localhost:3000/lfg2025/archy/raw/branch/main/releases/manifest.json"
echo " curl -fsS http://146.59.87.168:3000/lfg2025/archy/raw/branch/main/releases/manifest.json"