fix(desktop): Commit-Stempel aus TESSERA_COMMIT (Pipeline) statt nur git rev-parse; build.rs laeuft bei Aenderung neu
Mit dem Cargo-Zwischenspeicher wuerde ein einmal einkompilierter Stempel sonst veralten und der Beta-Update-Hinweis dauerhaft erscheinen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,6 +62,10 @@ jobs:
|
||||
desktop:
|
||||
name: Desktop-Pakete bauen
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
# Commit-Stempel fuer build.rs (WR-02): mit Cargo-Zwischenspeicher wuerde
|
||||
# `git rev-parse` im Build-Skript sonst nicht neu ausgewertet.
|
||||
TESSERA_COMMIT: ${{ gitea.sha }}
|
||||
needs: test
|
||||
if: gitea.ref == 'refs/heads/main' || startsWith(gitea.ref, 'refs/tags/v')
|
||||
steps:
|
||||
|
||||
@@ -8,13 +8,26 @@ fn main() {
|
||||
// `desktop-collect.sh` fuer manifest.json schreibt. Fehlt `git` (z. B.
|
||||
// Quell-Tarball ohne .git-Ordner), bleibt der Wert leer -- dann greift
|
||||
// nur noch der reine Versionsvergleich.
|
||||
let commit = std::process::Command::new("git")
|
||||
.args(["rev-parse", "--short=7", "HEAD"])
|
||||
.output()
|
||||
//
|
||||
// Vorrang hat die Umgebungsvariable TESSERA_COMMIT (die Pipeline setzt sie
|
||||
// auf den vollen Commit-Hash): der Cargo-Zwischenspeicher wuerde ein
|
||||
// `git rev-parse` sonst nicht neu auswerten, und ein alter Stempel im
|
||||
// Programm liesse den Beta-Update-Hinweis dauerhaft erscheinen.
|
||||
println!("cargo:rerun-if-env-changed=TESSERA_COMMIT");
|
||||
println!("cargo:rerun-if-changed=../../../.git/HEAD");
|
||||
let commit = std::env::var("TESSERA_COMMIT")
|
||||
.ok()
|
||||
.filter(|output| output.status.success())
|
||||
.and_then(|output| String::from_utf8(output.stdout).ok())
|
||||
.map(|s| s.trim().to_string())
|
||||
.map(|s| s.trim().chars().take(7).collect::<String>())
|
||||
.filter(|s| !s.is_empty())
|
||||
.or_else(|| {
|
||||
std::process::Command::new("git")
|
||||
.args(["rev-parse", "--short=7", "HEAD"])
|
||||
.output()
|
||||
.ok()
|
||||
.filter(|output| output.status.success())
|
||||
.and_then(|output| String::from_utf8(output.stdout).ok())
|
||||
.map(|s| s.trim().to_string())
|
||||
})
|
||||
.unwrap_or_default();
|
||||
println!("cargo:rustc-env=APP_COMMIT={commit}");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user