rsync 동기화 공통 스크립트 rsync 설치여부 추가

This commit is contained in:
2026-05-15 13:29:37 +09:00
parent 6e2481a2ab
commit 780dca3b70

View File

@@ -35,6 +35,10 @@ inputs:
required: false required: false
default: "true" default: "true"
description: 기본 제외 패턴 사용 여부 (.git/, .gitea/, .claude/, .DS_Store, README.md, CLAUDE.md, *.ori|origin|bak|back) description: 기본 제외 패턴 사용 여부 (.git/, .gitea/, .claude/, .DS_Store, README.md, CLAUDE.md, *.ori|origin|bak|back)
ensure-remote-rsync:
required: false
default: "true"
description: 원격 서버에 rsync가 없으면 자동 설치 시도 (sudo 권한 필요)
runs: runs:
using: composite using: composite
@@ -62,6 +66,56 @@ runs:
exit 1 exit 1
fi fi
- name: 원격 서버 rsync 확인
shell: bash
env:
DEPLOY_HOST: ${{ inputs.host }}
DEPLOY_PORT: ${{ inputs.port }}
DEPLOY_USER: ${{ inputs.user }}
KEY_PATH_INPUT: ${{ inputs.key-path }}
ENSURE_REMOTE: ${{ inputs.ensure-remote-rsync }}
run: |
set -eu
# 원격 rsync 확인을 건너뜁니다.
if [ "$ENSURE_REMOTE" != "true" ]; then
exit 0
fi
KEY_PATH="$KEY_PATH_INPUT"
if [ -z "$KEY_PATH" ]; then
KEY_PATH="$HOME/.ssh/deploy_key"
fi
ssh -i "$KEY_PATH" -p "$DEPLOY_PORT" -o IdentitiesOnly=yes \
"$DEPLOY_USER@$DEPLOY_HOST" 'bash -se' << 'REMOTE'
set -eu
# rsync가 이미 설치되어 있으면 건너뜁니다.
if command -v rsync >/dev/null 2>&1; then
exit 0
fi
# root가 아니면 sudo 사용
SUDO=""
if [ "$(id -u)" -ne 0 ]; then
SUDO="sudo"
fi
# 패키지 매니저에 따라 rsync를 설치합니다.
if command -v apt-get >/dev/null 2>&1; then
$SUDO apt-get update
$SUDO apt-get install -y rsync
elif command -v apk >/dev/null 2>&1; then
$SUDO apk add --no-cache rsync
elif command -v yum >/dev/null 2>&1; then
$SUDO yum install -y rsync
else
echo "원격 rsync 설치 실패: 지원하지 않는 배포판"
exit 1
fi
REMOTE
- name: 파일 동기화 - name: 파일 동기화
shell: bash shell: bash
env: env: