rsync 동기화 공통 스크립트 rsync 설치여부 추가
This commit is contained in:
@@ -35,6 +35,10 @@ inputs:
|
||||
required: false
|
||||
default: "true"
|
||||
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:
|
||||
using: composite
|
||||
@@ -62,6 +66,56 @@ runs:
|
||||
exit 1
|
||||
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: 파일 동기화
|
||||
shell: bash
|
||||
env:
|
||||
|
||||
Reference in New Issue
Block a user