feat: sequential build versioning, LND NET_RAW, status labels
All checks were successful
Build Archipelago ISO (dev) / build-iso (push) Successful in 55m11s
Container Orchestration Tests / unit-tests (push) Successful in 12m40s
Container Orchestration Tests / smoke-tests (push) Successful in 5m32s

Build versioning:
- Sequential build counter (/opt/archipelago/build-counter)
- Version format: 0.1.0-beta.N (written to build-info.txt)
- Backend reads version from build-info.txt at startup, falls
  back to Cargo.toml version — no recompile needed
- UI sidebar + settings show the build version automatically

LND fix (belt + suspenders):
- Added NET_RAW capability (config.rs, first-boot, container-specs)
- Combined with tlsextraip=0.0.0.0 from previous commit

Status labels:
- Both "exited" AND "stopped" states with non-zero exit codes
  now show "crashed" in the UI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-31 23:43:32 +01:00
parent 6cad154028
commit 51f8cf117d
2 changed files with 49 additions and 2 deletions

View File

@@ -253,12 +253,29 @@ pub struct PatchOperation {
}
impl DataModel {
/// Read build version from /opt/archipelago/build-info.txt if available,
/// falling back to Cargo.toml version. This allows sequential CI build
/// numbers to be reflected in the UI without recompiling the binary.
fn detect_build_version() -> String {
if let Ok(content) = std::fs::read_to_string("/opt/archipelago/build-info.txt") {
for line in content.lines() {
if let Some(v) = line.strip_prefix("version=") {
let v = v.trim();
if !v.is_empty() {
return v.to_string();
}
}
}
}
env!("CARGO_PKG_VERSION").to_string()
}
/// Create a new empty data model with default values
pub fn new() -> Self {
Self {
server_info: ServerInfo {
id: uuid::Uuid::new_v4().to_string(),
version: env!("CARGO_PKG_VERSION").to_string(),
version: Self::detect_build_version(),
name: Some("Archipelago".to_string()),
pubkey: String::new(),
status_info: StatusInfo {

View File

@@ -54,6 +54,21 @@ BUILD_FROM_SOURCE="${BUILD_FROM_SOURCE:-0}"
UNBUNDLED="${UNBUNDLED:-0}"
ARCH="${ARCH:-x86_64}"
# ── Sequential build numbering ─────────────────────────────────────────
# Increments on each build. Users see this in UI (Settings, sidebar).
# Counter persists in /opt/archipelago/build-counter (on build machine).
BUILD_COUNTER_FILE="/opt/archipelago/build-counter"
if [ -f "$BUILD_COUNTER_FILE" ]; then
BUILD_NUM=$(( $(cat "$BUILD_COUNTER_FILE") + 1 ))
else
BUILD_NUM=1
fi
echo "$BUILD_NUM" | sudo tee "$BUILD_COUNTER_FILE" > /dev/null 2>/dev/null || BUILD_NUM=1
GIT_SHORT=$(cd "$SCRIPT_DIR/.." && git rev-parse --short HEAD 2>/dev/null || echo "dev")
# Version format: 0.1.0-beta.BUILD_NUM (semver pre-release)
BUILD_VERSION="0.1.0-beta.${BUILD_NUM}"
echo "Build #${BUILD_NUM} (${BUILD_VERSION}, commit ${GIT_SHORT})"
# Architecture-dependent variables
case "$ARCH" in
x86_64|amd64)
@@ -2178,6 +2193,14 @@ while true; do
--disable-component-update \
--credentials_enable_service=false \
--disable-gpu \
--disable-breakpad \
--disable-metrics \
--disable-metrics-reporting \
--metrics-recording-only \
--disable-domain-reliability \
--disable-background-networking \
--disable-background-timer-throttling \
--disable-backgrounding-occluded-windows \
--user-data-dir=/home/archipelago/.config/chromium-kiosk
sleep 3
done
@@ -2652,7 +2675,9 @@ chroot /mnt/target systemctl enable archipelago-diag.service 2>/dev/null || true
# Write build info into the installed system
cat > /mnt/target/opt/archipelago/build-info.txt <<BUILDINFO
commit=$(cd /tmp 2>/dev/null && git -C "$BOOT_MEDIA/../" rev-parse --short HEAD 2>/dev/null || echo "unknown")
version=__BUILD_VERSION__
build=__BUILD_NUM__
commit=__GIT_SHORT__
date=$(date -u '+%Y-%m-%d %H:%M:%S UTC')
type=unbundled
BUILDINFO
@@ -2736,6 +2761,11 @@ echo b > /proc/sysrq-trigger 2>/dev/null || \
kill -9 1 2>/dev/null
INSTALLER_SCRIPT
# Inject build version into auto-install.sh (heredoc is single-quoted, can't expand variables)
sed -i "s|__BUILD_VERSION__|${BUILD_VERSION}|g" "$ARCH_DIR/auto-install.sh"
sed -i "s|__BUILD_NUM__|${BUILD_NUM}|g" "$ARCH_DIR/auto-install.sh"
sed -i "s|__GIT_SHORT__|${GIT_SHORT}|g" "$ARCH_DIR/auto-install.sh"
# For unbundled builds, patch the completion message to reflect no pre-loaded apps
if [ "$UNBUNDLED" = "1" ]; then
sed -i 's/Pre-loaded apps (ready to start via Web UI):/Install apps from the Marketplace (internet required):/' "$ARCH_DIR/auto-install.sh"