feat: check version.json for latest available commit
This commit is contained in:
parent
e9bbbb8171
commit
bd1835f5a3
2 changed files with 22 additions and 9 deletions
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
|
@ -124,6 +124,10 @@ jobs:
|
||||||
scp -i ~/.ssh/deploy_key \
|
scp -i ~/.ssh/deploy_key \
|
||||||
target/x86_64-unknown-linux-gnu/release/helios-remote-relay \
|
target/x86_64-unknown-linux-gnu/release/helios-remote-relay \
|
||||||
root@46.225.185.232:/var/www/helios-remote/helios-remote-relay-linux
|
root@46.225.185.232:/var/www/helios-remote/helios-remote-relay-linux
|
||||||
|
# Write version.json so CLI knows what's available
|
||||||
|
echo "{\"commit\":\"$(git rev-parse --short HEAD)\"}" > version.json
|
||||||
|
scp -i ~/.ssh/deploy_key version.json \
|
||||||
|
root@46.225.185.232:/var/www/helios-remote/version.json
|
||||||
|
|
||||||
build-cli:
|
build-cli:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
||||||
|
|
@ -722,7 +722,17 @@ fn main() {
|
||||||
Commands::Update { device } => {
|
Commands::Update { device } => {
|
||||||
validate_label(&device);
|
validate_label(&device);
|
||||||
|
|
||||||
// Fetch all three commits
|
// Fetch latest available commit from version.json
|
||||||
|
let latest_commit = match reqwest::blocking::get("https://agent-helios.me/downloads/helios-remote/version.json") {
|
||||||
|
Ok(r) => r
|
||||||
|
.json::<Value>()
|
||||||
|
.ok()
|
||||||
|
.and_then(|v| v["commit"].as_str().map(String::from))
|
||||||
|
.unwrap_or_else(|| "?".into()),
|
||||||
|
Err(e) => format!("error: {}", e),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fetch all three running commits
|
||||||
let relay_commit = match reqwest::blocking::get(&format!("{}/version", cfg.base_url)) {
|
let relay_commit = match reqwest::blocking::get(&format!("{}/version", cfg.base_url)) {
|
||||||
Ok(r) => r
|
Ok(r) => r
|
||||||
.json::<Value>()
|
.json::<Value>()
|
||||||
|
|
@ -739,13 +749,14 @@ fn main() {
|
||||||
|
|
||||||
let cli_commit = GIT_COMMIT;
|
let cli_commit = GIT_COMMIT;
|
||||||
|
|
||||||
|
println!(" latest {}", latest_commit);
|
||||||
println!(" relay {}", relay_commit);
|
println!(" relay {}", relay_commit);
|
||||||
println!(" cli {}", cli_commit);
|
println!(" cli {}", cli_commit);
|
||||||
println!(" client {}", client_commit);
|
println!(" client {}", client_commit);
|
||||||
|
|
||||||
let all_same = relay_commit == cli_commit && cli_commit == client_commit;
|
let all_current = relay_commit == latest_commit && cli_commit == latest_commit && client_commit == latest_commit;
|
||||||
if all_same {
|
if all_current {
|
||||||
println!(" ✅ Already up to date (commit: {})", cli_commit);
|
println!(" ✅ Already up to date (commit: {})", latest_commit);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -753,7 +764,7 @@ fn main() {
|
||||||
let mut updated_any = false;
|
let mut updated_any = false;
|
||||||
|
|
||||||
// Update relay if needed
|
// Update relay if needed
|
||||||
if relay_commit != cli_commit {
|
if relay_commit != latest_commit {
|
||||||
println!(" → Updating relay...");
|
println!(" → Updating relay...");
|
||||||
let data = req(&cfg, "POST", "/relay/update", None, 15);
|
let data = req(&cfg, "POST", "/relay/update", None, 15);
|
||||||
println!(" {}", data["message"].as_str().unwrap_or("triggered"));
|
println!(" {}", data["message"].as_str().unwrap_or("triggered"));
|
||||||
|
|
@ -761,7 +772,7 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update client if needed
|
// Update client if needed
|
||||||
if client_commit != cli_commit {
|
if client_commit != latest_commit {
|
||||||
println!(" → Updating client on {}...", device);
|
println!(" → Updating client on {}...", device);
|
||||||
let data = req(
|
let data = req(
|
||||||
&cfg,
|
&cfg,
|
||||||
|
|
@ -780,9 +791,7 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Self-update CLI if needed
|
// Self-update CLI if needed
|
||||||
// (relay_commit is the "canonical" latest — if we differ from it, we're outdated)
|
if cli_commit != latest_commit {
|
||||||
// Skip on non-x86_64 Linux (e.g. ARM/Pi) — CI only builds x86_64 Linux binaries
|
|
||||||
if cli_commit != relay_commit {
|
|
||||||
println!(" → Updating CLI...");
|
println!(" → Updating CLI...");
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
let url = "https://agent-helios.me/downloads/helios-remote/helios-remote-cli-windows.exe";
|
let url = "https://agent-helios.me/downloads/helios-remote/helios-remote-cli-windows.exe";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue