From d39592cf3a959b8294fa1a1b55017e85b28cd270 Mon Sep 17 00:00:00 2001 From: Dragan Filipovic Date: Mon, 2 Jan 2023 19:56:44 +0100 Subject: [PATCH] feat: Add SSH remote script support --- README.md | 23 ++++++++++++++++++++++- action.yml | 14 +++++++------- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ee08028..9c88b2e 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/action.yml b/action.yml index ff133c9..f26e459 100644 --- a/action.yml +++ b/action.yml @@ -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"