feat: Add SSH remote script support

This commit is contained in:
Dragan Filipovic 2023-01-02 19:56:44 +01:00
parent cf98c7e8be
commit d39592cf3a
2 changed files with 29 additions and 8 deletions

View File

@ -1,6 +1,8 @@
# ssh deployments
Deploy code with rsync over ssh, using NodeJS.
Deploy code with rsync over ssh.
Execute remote scripts before or after rsync
NodeJS version is more than a minute `faster` than simple Docker version.
@ -8,6 +10,8 @@ This GitHub Action deploys specific directory from `GITHUB_WORKSPACE` to a folde
This action would usually follow a build/test action which leaves deployable code in `GITHUB_WORKSPACE`, eg `dist`;
In addition to rsync, this action provides scripts execution on remote host before and/or after rsync.
# Configuration
Pass configuration with `env` vars
@ -53,6 +57,16 @@ The target directory
path to exclude separated by `,`, ie: `/dist/, /node_modules/`
##### 9. `SCRIPT_BEFORE` (optional, default '')
Script to run on host machine before rsync. Single line or multiline commands.
Execution is preformed by storing commands in `.sh` file and executing it via `.bash` over `ssh`
##### 10. `SCRIPT_AFTER` (optional, default '')
Script to run on host machine after rsync.
Rsync output is stored in `$RSYNC_STDOUT` env variable.
# Usage
Use the latest version from Marketplace,eg: ssh-deploy@v2
@ -69,6 +83,13 @@ or use the latest version from a branch, eg: ssh-deploy@main
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
EXCLUDE: "/dist/, /node_modules/"
SCRIPT_BEFORE: |
whoami
ls -al
SCRIPT_AFTER: |
whoami
ls -al
echo $RSYNC_STDOUT
```
# Example usage in workflow

View File

@ -1,9 +1,9 @@
name: "ssh deploy"
description: "NodeJS action for FAST deployment with rsync/ssh"
description: "NodeJS action for FAST deployment with rsync/ssh and remote script execution before/after rsync"
author: "easingthemes"
inputs:
SSH_PRIVATE_KEY: # Private Key
description: "Private Key"
SSH_PRIVATE_KEY:
description: "Private key part of an SSH key pair"
required: true
REMOTE_HOST:
description: "Remote host"
@ -16,7 +16,7 @@ inputs:
required: false
default: "22"
SOURCE:
description: "Source directory"
description: "Source directory, path relative to `$GITHUB_WORKSPACE` root, eg: `dist/`"
required: false
default: ""
TARGET:
@ -32,17 +32,17 @@ inputs:
required: false
default: "-o StrictHostKeyChecking=no"
EXCLUDE:
description: "An array of folder to exclude"
description: "paths to exclude separated by `,`, ie: `/dist/, /node_modules/`"
required: false
default: ""
SCRIPT_BEFORE:
description: "Script to run on host machine before rsync"
required: false
default: "echo 'Before rsync'"
default: ""
SCRIPT_AFTER:
description: "Script to run on host machine after rsync"
required: false
default: "echo 'After rsync'"
default: ""
outputs:
status:
description: "Status"