#!/usr/bin/env bash # 빌드머신(ChanpacaLaptop=linux / Mac mini=macos)에서 # Cli + Avalonia 셸을 RID별 self-contained publish 하고 # 산출물을 로컬 out/Paca-.tar.gz 로 수집한다. # # 사용: bash build/remote/build-remote.sh [linux|mac|all] set -euo pipefail cd "$(dirname "$0")/../.." TARGET="${1:-all}" REMOTE_DIR="build/Paca" mkdir -p out push_src() { # $1 = ssh 대상 echo "==> [$1] 소스 코드 전송" git archive HEAD | ssh -o BatchMode=yes "$1" "rm -rf $REMOTE_DIR && mkdir -p $REMOTE_DIR && tar -x -C $REMOTE_DIR" } build_and_collect() { # $1 = ssh 대상, $2 = RID local host="$1" local rid="$2" echo "==> [$host] publish $rid" ssh -o BatchMode=yes "$host" "cd $REMOTE_DIR && export DOTNET_ROOT=\$HOME/.dotnet && export PATH=\$HOME/.dotnet:\$PATH && \ dotnet publish src/Paca.Cli -c Release -r $rid --self-contained -o out/cli-$rid && \ dotnet publish src/Paca.Avalonia -c Release -r $rid --self-contained -o out/avalonia-$rid && \ cd out && tar -czf Paca-$rid.tar.gz cli-$rid avalonia-$rid" echo "==> [$host] 수집: out/Paca-$rid.tar.gz" scp -o BatchMode=yes "$host:$REMOTE_DIR/out/Paca-$rid.tar.gz" "out/Paca-$rid.tar.gz" } if [[ "$TARGET" == "mac" || "$TARGET" == "all" ]]; then push_src vd-mac build_and_collect vd-mac osx-arm64 build_and_collect vd-mac osx-x64 fi if [[ "$TARGET" == "linux" || "$TARGET" == "all" ]]; then push_src vd-linux build_and_collect vd-linux linux-x64 build_and_collect vd-linux linux-arm64 fi echo "==> 원격 빌드 완료:" ls -lh out/Paca-*.tar.gz 2>/dev/null || true