46 lines
1.6 KiB
Bash
46 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# 빌드머신(ChanpacaLaptop=linux / Mac mini=macos)에서
|
|
# Cli + Avalonia 셸을 RID별 self-contained publish 하고
|
|
# 산출물을 로컬 out/mediabrowser-<rid>.tar.gz 로 수집한다.
|
|
#
|
|
# 사용: bash build/remote/build-remote.sh [linux|mac|all]
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/../.."
|
|
|
|
TARGET="${1:-all}"
|
|
REMOTE_DIR="build/videodownloader"
|
|
|
|
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 VideoDownloader.Cli -c Release -r $rid --self-contained -o out/cli-$rid && \
|
|
dotnet publish VideoDownloader.Avalonia -c Release -r $rid --self-contained -o out/avalonia-$rid && \
|
|
cd out && tar -czf mediabrowser-$rid.tar.gz cli-$rid avalonia-$rid"
|
|
|
|
echo "==> [$host] 수집: out/mediabrowser-$rid.tar.gz"
|
|
scp -o BatchMode=yes "$host:$REMOTE_DIR/out/mediabrowser-$rid.tar.gz" "out/mediabrowser-$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/mediabrowser-*.tar.gz 2>/dev/null || true
|