Files
commonDeploy/remote-command/action.yml
T

52 lines
1.2 KiB
YAML

name: 원격 명령어 실행
description: 원격 서버에서 명령어를 실행
inputs:
host:
required: true
port:
required: false
default: "22"
user:
required: true
key-path:
required: false
default: ""
command:
required: true
runs:
using: composite
steps:
- shell: bash
run: |
set -eu
SUDO=""
[ "$(id -u)" -ne 0 ] && SUDO="sudo"
if ! command -v ssh >/dev/null 2>&1; then
if command -v apt-get >/dev/null 2>&1; then
$SUDO apt-get update
$SUDO apt-get install -y --no-install-recommends openssh-client
else
echo "ssh가 없습니다. openssh-client를 설치한 러너가 필요합니다."
exit 1
fi
fi
KEY_PATH="${{ inputs.key-path }}"
if [ -z "$KEY_PATH" ]; then
KEY_PATH="$HOME/.ssh/deploy_key"
fi
case "$KEY_PATH" in
"~/"*) KEY_PATH="$HOME/${KEY_PATH#\~/}" ;;
esac
ssh -p "${{ inputs.port }}" -i "$KEY_PATH" \
-o IdentitiesOnly=yes \
"${{ inputs.user }}@${{ inputs.host }}" \
'bash -se' << 'EOF'
${{ inputs.command }}
EOF