refactor: update dependencies and remove unused code
- Added new dependencies: `adler2`, `crc32fast`, `flate2`, `miniz_oxide`, and `libredox`. - Updated existing dependencies: `tokio-rustls` to version 0.26.4 and `filetime` to version 0.2.27. - Removed the `backup.rs` file as it is no longer needed. - Introduced tests for configuration and credential management. - Enhanced the `identity` module to generate W3C compliant DID documents. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
111
docs/release-process.md
Normal file
111
docs/release-process.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# Archipelago Release Process
|
||||
|
||||
## Overview
|
||||
|
||||
Archipelago uses a JSON-based release manifest for the auto-update system. The backend checks `UPDATE_MANIFEST_URL` periodically (based on user's schedule setting) and compares versions.
|
||||
|
||||
## Manifest Format
|
||||
|
||||
The manifest is a single JSON file at:
|
||||
```
|
||||
https://raw.githubusercontent.com/archipelago-os/releases/main/manifest.json
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"release_date": "2026-04-01",
|
||||
"changelog": [
|
||||
"Added automatic update scheduling",
|
||||
"Improved backup encryption"
|
||||
],
|
||||
"components": [
|
||||
{
|
||||
"name": "archipelago",
|
||||
"current_version": "0.1.0",
|
||||
"new_version": "0.2.0",
|
||||
"download_url": "https://github.com/archipelago-os/releases/releases/download/v0.2.0/archipelago",
|
||||
"sha256": "abc123...",
|
||||
"size_bytes": 15000000
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Release Steps
|
||||
|
||||
### 1. Build Release Artifacts
|
||||
|
||||
On the build server (192.168.1.228):
|
||||
|
||||
```bash
|
||||
# Build backend (release mode)
|
||||
cd ~/archy/core
|
||||
cargo build --release -p archipelago
|
||||
|
||||
# Build frontend
|
||||
cd ~/archy/neode-ui
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 2. Generate Manifest
|
||||
|
||||
```bash
|
||||
./scripts/create-release-manifest.sh \
|
||||
--version 0.2.0 \
|
||||
--date 2026-04-01
|
||||
```
|
||||
|
||||
This auto-detects the backend binary and frontend archive, computes SHA256 hashes, and writes `manifest.json`.
|
||||
|
||||
### 3. Upload Artifacts
|
||||
|
||||
Upload the backend binary and frontend archive to GitHub Releases:
|
||||
|
||||
```bash
|
||||
gh release create v0.2.0 \
|
||||
core/target/release/archipelago \
|
||||
/tmp/archipelago-frontend-0.2.0.tar.gz \
|
||||
--title "v0.2.0" \
|
||||
--notes "See CHANGELOG.md for details"
|
||||
```
|
||||
|
||||
### 4. Publish Manifest
|
||||
|
||||
Push the generated `manifest.json` to the releases repo:
|
||||
|
||||
```bash
|
||||
# In the archipelago-os/releases repo
|
||||
cp manifest.json .
|
||||
git add manifest.json
|
||||
git commit -m "Release v0.2.0"
|
||||
git push
|
||||
```
|
||||
|
||||
### 5. Tag the Source
|
||||
|
||||
```bash
|
||||
git tag v0.2.0
|
||||
git push --tags
|
||||
```
|
||||
|
||||
## Update Schedules
|
||||
|
||||
Users can configure how updates are handled:
|
||||
|
||||
| Schedule | Behavior |
|
||||
|----------|----------|
|
||||
| **Manual** | Never checks automatically. User must click "Check for Updates" |
|
||||
| **Daily Check** (default) | Checks once per day. Notifies user, who decides when to install |
|
||||
| **Auto-Apply** | Checks daily. Downloads and applies at 3 AM, restarts service |
|
||||
|
||||
## Rollback
|
||||
|
||||
If an update causes issues, users can rollback from the System Update page. The previous binary is backed up to `{data_dir}/update-backup/` before applying.
|
||||
|
||||
## Security
|
||||
|
||||
- All downloads are verified against SHA256 hashes in the manifest
|
||||
- The manifest itself is fetched over HTTPS from a known URL
|
||||
- Binary replacement requires service restart (handled by systemd)
|
||||
- Rollback is always available after an update
|
||||
Reference in New Issue
Block a user