fix(tools-pve/asr-pipeline): support /state/vault and /state/ssh inside container
Build image / build (push) Canceled after 0s
Build ASR Pipeline / image (push) Canceled after 0s

This commit is contained in:
Codex
2026-11-02 03:07:41 -08:00
parent bf5ea57d99
commit 9debd1c47d
2 changed files with 32 additions and 3 deletions
@@ -205,11 +205,26 @@ class _SettingAttr:
instance.__dict__.pop(self.override_attr, None) instance.__dict__.pop(self.override_attr, None)
def _default_vault_path() -> Path:
state_vault = _state_db_path().parent / "vault"
if (state_vault / ".git").exists():
return state_vault
env_vault = _env("ASR_VAULT", "")
if env_vault:
p = Path(env_vault)
if (p / ".git").exists() or not state_vault.exists():
return p
return Path.home() / "obsidian-vault"
@dataclass @dataclass
class Config: class Config:
# ---- paths ---------------------------------------------------------- # ---- paths ----------------------------------------------------------
vault: Path = field(default_factory=lambda: Path( vault = _SettingAttr(
_env("ASR_VAULT", str(Path.home() / "obsidian-vault")))) "vault_dir",
lambda: str(_default_vault_path()),
lambda s: Path(s),
)
obsidian: Path = field(default_factory=lambda: Path( obsidian: Path = field(default_factory=lambda: Path(
_env("ASR_WORKSPACE", str(ROOT)))) _env("ASR_WORKSPACE", str(ROOT))))
root: Path = ROOT root: Path = ROOT
@@ -10,6 +10,7 @@ Ported from the legacy shell implementation with its hard-won details preserved:
""" """
from __future__ import annotations from __future__ import annotations
import os
import re import re
import subprocess import subprocess
import tempfile import tempfile
@@ -90,10 +91,23 @@ def update_pending(date: str, title: str, path: Path) -> None:
def _git(*args, check=False) -> subprocess.CompletedProcess: def _git(*args, check=False) -> subprocess.CompletedProcess:
env = dict(os.environ)
for key_candidate in (
CFG.state_dir / "ssh" / "id_ed25519_gitea",
Path("/state/ssh/id_ed25519_gitea"),
Path("/root/.ssh/id_ed25519_gitea"),
Path.home() / ".ssh" / "id_ed25519_gitea",
):
if key_candidate.exists():
env.setdefault(
"GIT_SSH_COMMAND",
f"ssh -i {key_candidate} -o StrictHostKeyChecking=accept-new -o IdentitiesOnly=yes",
)
break
return subprocess.run( return subprocess.run(
["git", "-c", f"safe.directory={CFG.vault}", *args], ["git", "-c", f"safe.directory={CFG.vault}", *args],
cwd=CFG.vault, capture_output=True, cwd=CFG.vault, capture_output=True,
text=True, timeout=180, check=check, text=True, timeout=180, check=check, env=env,
) )