diff --git a/action.yml b/action.yml index d2f83ec..afb5784 100644 --- a/action.yml +++ b/action.yml @@ -1,9 +1,9 @@ -name: 'SCP deploy action' +name: 'SCP Deploy Smart' description: 'Action to send dist files to a remote server with scp command' -author: 'Fabricio Nogueira' +author: 'Fabricio Nogueira & Jackz' inputs: src: - description: 'Sorce dir to deploy' + description: 'Source dir to deploy' required: true host: description: 'SSH address' @@ -14,7 +14,7 @@ inputs: port: description: 'SSH Port' required: false - default: 22 + default: "22" user: description: 'SSH User name' required: true @@ -24,6 +24,9 @@ inputs: options: description: 'Extra options for scp' required: false + extract: + description: 'Is src a tar file to be extracted?' + required: false runs: using: 'docker' image: 'Dockerfile' diff --git a/entrypoint.sh b/entrypoint.sh index fc5543f..380c690 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,6 +1,7 @@ #!/bin/sh -l set -e echo -e "${INPUT_KEY}" >__TEMP_INPUT_KEY_FILE +set -x chmod 600 __TEMP_INPUT_KEY_FILE @@ -9,13 +10,22 @@ if [[ -z "$COMMIT_SHA" ]]; then echo "COMMIT_SHA: Could not find file ${INPUT_SRC}/.git-commit" exit 1 fi +echo "SSH Host: ${INPUT_USER}@${INPUT_HOST}:${INPUT_PORT}" +echo "Local Path: ${INPUT_SRC}" +echo "Remote Path: ${INPUT_REMOTE}" +echo "Commit: ${COMMIT_SHA}" +if [[ -z "$INPUT_EXTRACT"]]; then +# SCP normal files scp -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE \ - -P "${INPUT_PORT}" $INPUT_OPTIONS -r ${INPUT_SRC} "${INPUT_USER}"@"${INPUT_HOST}":"${INPUT_REMOTE}/${COMMIT_SHA}" 2>/dev/null - -echo "File transfer complete." -echo "Symlinking, purging old" -echo "Running on ssh: ln -s ${INPUT_REMOTE}/${COMMIT_SHA} ${INPUT_REMOTE}/latest" - -ssh -P "${INPUT_PORT}" "${INPUT_USER}"@"${INPUT_HOST}" \ - -C "ln -s ${INPUT_REMOTE}/${COMMIT_SHA} ${INPUT_REMOTE}/latest && find . -mindepth 1 -maxdepth 1 -type d -not -path './latest' | tail -n +5 | rm -r" + -P "${INPUT_PORT}" $INPUT_OPTIONS -r ${INPUT_SRC} "${INPUT_USER}"@"${INPUT_HOST}":"${INPUT_REMOTE}/${COMMIT_SHA}" +elif +# Untar directly via SSh +ssh -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE \ + "${INPUT_USER}"@"${INPUT_HOST}" -p "${INPUT_PORT}" \ + -C "mkdir ${INPUT_REMOTE}/${COMMIT_SHA} && cd ${INPUT_REMOTE}/${COMMIT_SHA} && tar -xvv" < $INPUT_SRC +fi +echo "File transfer complete. Symlinking and purging old entries" +ssh -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE \ + "${INPUT_USER}"@"${INPUT_HOST}" -p "${INPUT_PORT}" \ + -C "ln -s ${INPUT_REMOTE}/${COMMIT_SHA} ${INPUT_REMOTE}/latest && find ${INPUT_REMOTE} -mindepth 1 -maxdepth 1 -type d -not -path './latest' | tail -n +5 | xargs --no-run-if-empty rm -r"