diff options
| author | Craig Jennings <c@cjennings.net> | 2026-01-19 11:03:28 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-01-19 11:03:28 -0600 |
| commit | 9f22e587191f85a434157eb0d953ed7bd6c86465 (patch) | |
| tree | d4534a54e1d3e0f051d0b66b9af5bb4b24c53db2 /scripts | |
| parent | 150d68be118798defc2616ec5f01cf230255d1db (diff) | |
| download | archangel-9f22e587191f85a434157eb0d953ed7bd6c86465.tar.gz archangel-9f22e587191f85a434157eb0d953ed7bd6c86465.zip | |
Fix build-release for running with sudo
- Use SUDO_USER to get real user's home directory
- Run SSH/SCP as real user to use their SSH keys
- Handle TrueNAS SSH failure gracefully (warn and continue)
- Track actual TrueNAS success status for summary
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/build-release | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/scripts/build-release b/scripts/build-release index f1cbe1e..030a88b 100755 --- a/scripts/build-release +++ b/scripts/build-release @@ -17,8 +17,17 @@ set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" +# Get actual user (not root when running with sudo) +if [[ -n "$SUDO_USER" ]]; then + REAL_USER="$SUDO_USER" + REAL_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6) +else + REAL_USER="$USER" + REAL_HOME="$HOME" +fi + # Distribution targets -LOCAL_ISO_DIR="$HOME/Downloads/isos" +LOCAL_ISO_DIR="$REAL_HOME/Downloads/isos" TRUENAS_HOST="truenas.local" TRUENAS_PATH="/mnt/vault/isos" @@ -53,6 +62,9 @@ while [[ $# -gt 0 ]]; do esac done +# Distribution status tracking +TRUENAS_SUCCESS=false + # Check root for build check_root() { if [[ $EUID -ne 0 ]]; then @@ -195,13 +207,26 @@ distribute_truenas() { info "TrueNAS is reachable" + # Run SSH/SCP as the real user (not root) to use their SSH keys + local ssh_cmd="ssh" + local scp_cmd="scp" + if [[ -n "$SUDO_USER" ]]; then + ssh_cmd="sudo -u $SUDO_USER ssh" + scp_cmd="sudo -u $SUDO_USER scp" + fi + # Remove old ISOs and copy new one info "Removing old ISOs from TrueNAS..." - ssh "root@$TRUENAS_HOST" "rm -f $TRUENAS_PATH/archzfs-*.iso" 2>/dev/null || true + $ssh_cmd "root@$TRUENAS_HOST" "rm -f $TRUENAS_PATH/archzfs-*.iso" 2>/dev/null || true info "Copying to $TRUENAS_HOST:$TRUENAS_PATH/" - scp "$ISO_FILE" "root@$TRUENAS_HOST:$TRUENAS_PATH/" - info "Done: $TRUENAS_HOST:$TRUENAS_PATH/$ISO_NAME" + if $scp_cmd "$ISO_FILE" "root@$TRUENAS_HOST:$TRUENAS_PATH/"; then + info "Done: $TRUENAS_HOST:$TRUENAS_PATH/$ISO_NAME" + TRUENAS_SUCCESS=true + else + warn "Failed to copy to TrueNAS (SSH key issue?), skipping" + return 0 + fi } # Write to ARCHZFS USB drive @@ -284,10 +309,10 @@ show_summary() { echo "Distributed to:" echo " ✓ $LOCAL_ISO_DIR/" - if ping -c 1 -W 1 "$TRUENAS_HOST" &>/dev/null; then + if $TRUENAS_SUCCESS; then echo " ✓ $TRUENAS_HOST:$TRUENAS_PATH/" else - echo " ✗ $TRUENAS_HOST (not reachable)" + echo " ✗ $TRUENAS_HOST (failed or skipped)" fi if [[ -n "$ARCHZFS_DISK" ]]; then |
