Compare commits
25 commits
Author | SHA1 | Date | |
---|---|---|---|
bd4da76485 | |||
408ca30608 | |||
5160db3212 | |||
7462fb0984 | |||
ff8e07e7f2 | |||
80286d41fa | |||
7123b59216 | |||
d949eaab09 | |||
d5370c265f | |||
9a2701b513 | |||
7a5f9c9bbd | |||
4e7b2d2b9f | |||
26910b09ab | |||
9e5b4bb468 | |||
619006f67e | |||
7a6bd2c5c7 | |||
93b0f4fb86 | |||
bc4fb13afa | |||
c4ecacfccb | |||
![]() |
48b9ca0b1a | ||
![]() |
08d0e7cde1 | ||
![]() |
c72c8bbce7 | ||
![]() |
ad4ef26acf | ||
![]() |
1d25b00c26 | ||
![]() |
614178c124 |
6 changed files with 52 additions and 13 deletions
5
.dockerignore
Normal file
5
.dockerignore
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
*
|
||||||
|
*./*
|
||||||
|
*/*
|
||||||
|
*.*
|
||||||
|
!*.sh
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
||||||
.history
|
.history
|
||||||
.vscode
|
.vscode
|
||||||
|
*.log
|
|
@ -1,7 +1,9 @@
|
||||||
FROM alpine:3.10
|
FROM alpine:3.10
|
||||||
|
|
||||||
COPY LICENSE README.md /
|
RUN apk upgrade --update \
|
||||||
|
&& apk add --update openssh \
|
||||||
|
&& rm -rf /tmp/* /usr/share/man /var/cache/apk/*
|
||||||
|
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY . /
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|
|
@ -4,12 +4,13 @@ Action to send dist files to a remote server with scp command
|
||||||
|
|
||||||
## Required params
|
## Required params
|
||||||
|
|
||||||
- `src`: Sorce dir to deploy
|
- `src`: Source dir to deploy
|
||||||
- `host`: SSH address
|
- `host`: SSH address
|
||||||
- `remote`: Remote dir path
|
- `remote`: Remote dir path
|
||||||
- `port`: SSH Port
|
- `port`: SSH Port
|
||||||
- `user`: SSH User name
|
- `user`: SSH User name
|
||||||
- `key`: Private key
|
- `key`: Private key
|
||||||
|
- `options` : Extra options for scp
|
||||||
|
|
||||||
|
|
||||||
### To publish
|
### To publish
|
||||||
|
@ -59,4 +60,4 @@ jobs:
|
||||||
port: ${{ secrets.SSH_PORT }}
|
port: ${{ secrets.SSH_PORT }}
|
||||||
user: ${{ secrets.SSH_USER }}
|
user: ${{ secrets.SSH_USER }}
|
||||||
key: ${{ secrets.SSH_KEY }}
|
key: ${{ secrets.SSH_KEY }}
|
||||||
```
|
```
|
||||||
|
|
18
action.yml
18
action.yml
|
@ -1,29 +1,35 @@
|
||||||
name: 'SCP deploy action'
|
name: 'SCP Deploy Smart'
|
||||||
description: 'Action to send dist files to a remote server with scp command'
|
description: 'Action to send dist files to a remote server with scp command'
|
||||||
author: 'Fabricio Nogueira'
|
author: 'Fabricio Nogueira & Jackz'
|
||||||
inputs:
|
inputs:
|
||||||
src:
|
src:
|
||||||
description: 'Sorce dir to deploy'
|
description: 'Source dir to deploy'
|
||||||
required: true
|
required: true
|
||||||
host:
|
host:
|
||||||
description: 'SSH address'
|
description: 'SSH address'
|
||||||
required: true
|
required: true
|
||||||
remote:
|
remote:
|
||||||
description: 'Remote dir path'
|
description: 'base remote folder'
|
||||||
required: true
|
required: true
|
||||||
port:
|
port:
|
||||||
description: 'SSH Port'
|
description: 'SSH Port'
|
||||||
required: false
|
required: false
|
||||||
default: 22
|
default: "22"
|
||||||
user:
|
user:
|
||||||
description: 'SSH User name'
|
description: 'SSH User name'
|
||||||
required: true
|
required: true
|
||||||
key:
|
key:
|
||||||
description: 'Private key'
|
description: 'Private key'
|
||||||
required: true
|
required: true
|
||||||
|
options:
|
||||||
|
description: 'Extra options for scp'
|
||||||
|
required: false
|
||||||
|
extract:
|
||||||
|
description: 'Is src a tar file to be extracted?'
|
||||||
|
required: false
|
||||||
runs:
|
runs:
|
||||||
using: 'docker'
|
using: 'docker'
|
||||||
image: 'Dockerfile'
|
image: 'Dockerfile'
|
||||||
branding:
|
branding:
|
||||||
icon: 'upload-cloud'
|
icon: 'upload-cloud'
|
||||||
color: 'blue'
|
color: 'blue'
|
||||||
|
|
|
@ -1,7 +1,31 @@
|
||||||
#!/bin/sh -l
|
#!/bin/sh -l
|
||||||
|
set -e
|
||||||
echo -e "${INPUT_KEY}" >__TEMP_INPUT_KEY_FILE
|
echo -e "${INPUT_KEY}" >__TEMP_INPUT_KEY_FILE
|
||||||
|
set -x
|
||||||
|
|
||||||
chmod 600 __TEMP_INPUT_KEY_FILE
|
chmod 600 __TEMP_INPUT_KEY_FILE
|
||||||
|
|
||||||
scp -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE -P "${INPUT_PORT}" -r ${INPUT_SRC} "${INPUT_USER}"@"${INPUT_HOST}":"${INPUT_REMOTE}"
|
COMMIT_SHA=$(cat ${INPUT_SRC}/.git-commit)
|
||||||
|
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}"
|
||||||
|
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"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue