mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-28 20:59:09 +00:00
d94e586af3
* feat(blueprints): require confirmed rollout preview before reconcile Persist place/remove approval with an intent fingerprint and transition matrix so Apply, Retry, ticks, and pin cannot mutate the fleet until the operator confirms the current blast radius. Preview surfaces requirements, health, and informational in-flight rows without executing them. * fix(blueprints): silence unused retry nodeId lint error * test(blueprints): harden approval gate coverage and preview clarity Add real reconcileOne place/remove fan-out and STALE_GUARD regressions, surface reachability in the rollout dialog, align warning totals, and document the fail-closed upgrade pause. * test(blueprints): cover legacy approval schema migration Seed a pre-approval database with an enabled Blueprint and live deployment, run production DatabaseService startup, and assert pending null auth columns plus a fail-closed reconcile gate. * test(blueprints): clarify legacy approval migration fixture Extract seed/boot helpers so the migration regression reads as a linear upgrade path without changing assertions. * fix(blueprints): report apply outcomes and gate manual withdraw Return per-node reconcile outcomes from Confirm Apply, block create preview on unmanaged same-name stacks, and require an approved remove outcome for every manual withdraw or evict. * fix(blueprints): scope withdraw approval to destructive eviction Require remove approval only for snapshot/evict confirms and evict_blocked rows. Keep plain stateless standard withdraw as an immediate stop, and update withdraw-route tests to seed remove approval when needed.
96 lines
4.0 KiB
Plaintext
96 lines
4.0 KiB
Plaintext
---
|
|
title: Upgrading Sencho
|
|
description: How to update Sencho, what happens during upgrades, and the version policy.
|
|
---
|
|
|
|
<Note>
|
|
Sencho is used in production for day-to-day Docker Compose and fleet management. As a pre-1.0 project it still evolves quickly, so review the [known limitations](https://github.com/studio-saelix/sencho/blob/main/KNOWN_LIMITATIONS.md) and validate against your own setup before deploying it on critical infrastructure.
|
|
</Note>
|
|
|
|
## Upgrade steps
|
|
|
|
Upgrading Sencho is a two-command process. Pull the latest image and recreate the container:
|
|
|
|
```bash
|
|
docker compose pull
|
|
docker compose up -d
|
|
```
|
|
|
|
Or if you're running with `docker run`:
|
|
|
|
```bash
|
|
docker pull saelix/sencho:latest
|
|
docker stop sencho && docker rm sencho
|
|
# Re-run your original docker run command
|
|
```
|
|
|
|
Sencho will apply any necessary database migrations automatically on startup. No manual steps are required.
|
|
|
|
<Note>
|
|
Remote nodes can be updated directly from the Fleet View without dropping to a shell. See [Remote Updates](/features/remote-updates) for details.
|
|
</Note>
|
|
|
|
---
|
|
|
|
## Automatic migrations
|
|
|
|
Sencho handles all schema changes internally. When the application starts, it checks whether the database needs updating and applies any pending migrations automatically. This covers:
|
|
|
|
- **New tables and columns** for features introduced in newer versions
|
|
- **Legacy config migration** from very early versions that used a JSON config file
|
|
- **Admin account migration** from single-admin storage to the multi-user system
|
|
- **Encryption of sensitive values** (node API tokens, registry credentials) that were previously stored in plaintext
|
|
- **SSO and RBAC setup** for single sign-on provider config and role-based access
|
|
- **Legacy cleanup** of obsolete fields from pre-0.7 versions (SSH/TLS columns)
|
|
- **Blueprint rollout approval** columns (`approval_status`, intent fingerprint, and blast JSON). Existing Blueprints start **pending**. Automatic reconciliation and enforcement pause until an admin opens **Apply now**, reviews the rollout preview, and confirms. New installs behave the same way for each Blueprint until the first confirmation.
|
|
|
|
You never need to run SQL commands, migration scripts, or any manual database operations.
|
|
|
|
---
|
|
|
|
## Backup before upgrading
|
|
|
|
Always back up your data directory before upgrading. If something goes wrong, restoring from backup is the only recovery path. Sencho does not support downgrading or rolling back database migrations.
|
|
|
|
```bash
|
|
# Copy both the database and the encryption key
|
|
cp /path/to/sencho-data/sencho.db /path/to/backup/sencho-pre-upgrade.db
|
|
cp /path/to/sencho-data/encryption.key /path/to/backup/encryption-pre-upgrade.key
|
|
```
|
|
|
|
See the [Backup & Restore guide](/operations/backup) for full backup procedures.
|
|
|
|
---
|
|
|
|
## Pinning a specific version
|
|
|
|
If you prefer to control exactly which version you run, pin the image tag in your `docker-compose.yml`:
|
|
|
|
```yaml
|
|
image: saelix/sencho:0.38.0
|
|
```
|
|
|
|
|
|
|
|
Fleet can update semver pins directly from the Node updates sheet: it rewrites the tag to the selected release before recreating the container. Digest pins and compose values that use variable interpolation must be changed manually before Fleet can update the node.
|
|
|
|
Check [GitHub Releases](https://github.com/studio-saelix/sencho/releases) for available versions and changelogs.
|
|
|
|
---
|
|
|
|
## Version policy
|
|
|
|
Sencho follows [Semantic Versioning](https://semver.org/) (`MAJOR.MINOR.PATCH`):
|
|
|
|
| Change type | Version bump | Example |
|
|
|-------------|-------------|---------|
|
|
| Bug fixes, performance improvements | Patch | 0.38.0 → 0.38.1 |
|
|
| New features | Minor | 0.38.x → 0.39.0 |
|
|
| Breaking changes | Major | 0.x.y → 1.0.0 |
|
|
|
|
<Note>
|
|
While the version is below 1.0, minor releases (0.x.0) may occasionally include breaking changes. These are always documented in the release notes. Once Sencho reaches 1.0, breaking changes will only occur in major releases.
|
|
</Note>
|
|
|
|
Breaking changes are marked with `BREAKING CHANGE` in the [release notes](https://github.com/studio-saelix/sencho/releases). Subscribe to the repository's releases to be notified of new versions.
|