-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.sh
executable file
·35 lines (27 loc) · 1.14 KB
/
script.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env bash
set -ev
BASE_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)"
REMOTE_CODE="$(< "$BASE_DIR/remote.sh")"
REMOTE_CODE="${REMOTE_CODE//\$INPUT_BLUE_PORT/$INPUT_BLUE_PORT}"
REMOTE_CODE="${REMOTE_CODE//\$INPUT_GREEN_PORT/$INPUT_GREEN_PORT}"
REMOTE_CODE="${REMOTE_CODE//\$INPUT_NAME/$INPUT_NAME}"
REMOTE_CODE="${REMOTE_CODE//\$INPUT_STRIP_COMPONENTS/$INPUT_STRIP_COMPONENTS}"
tmp_dir="${RUNNER_TEMP:-$TMPDIR}"
tar --exclude=.git -czf "$tmp_dir/$INPUT_NAME.tgz" "$INPUT_SOURCE"
if [ "$INPUT_PASSWORD" == '' ]; then
remote="$INPUT_USERNAME@$INPUT_HOST"
else
remote="$INPUT_USERNAME:$INPUT_PASSWORD@$INPUT_HOST"
fi
ssh_args=()
if [ "$INPUT_PRIVATE_KEY" != '' ]; then
mkdir -p "$HOME/.ssh"
chmod 700 "$HOME/.ssh"
printf '%s' "$INPUT_PRIVATE_KEY" > "$HOME/.ssh/$INPUT_NAME"
chmod 600 "$HOME/.ssh/$INPUT_NAME"
ssh_args+=('-i' "$HOME/.ssh/$INPUT_NAME")
ssh-keyscan "$INPUT_HOST" >> "$HOME/.ssh/known_hosts"
chmod 600 "$HOME/.ssh/known_hosts"
fi
scp "${ssh_args[@]}" -P "$INPUT_PORT" "$tmp_dir/$INPUT_NAME.tgz" "$remote:$INPUT_NAME.tgz"
ssh "${ssh_args[@]}" -p "$INPUT_PORT" "$remote" 'bash -s' <<< "$REMOTE_CODE"