Merge pull request #1 from fmal/feat/remote-port

add optional `REMOTE_PORT` env to configuration
This commit is contained in:
Dragan Filipović authored and GitHub committed 2020-01-09 22:19:49 +01:00
commit 445db7826b
6 files changed
+41 -30

No files matched your search

+6 -2
View File
@@ -16,14 +16,18 @@ Pass configuration with `env` vars
This should be the private key part of an ssh key pair. The public key part should be added to the authorized_keys file on the server that receives the deployment. This should be the private key part of an ssh key pair. The public key part should be added to the authorized_keys file on the server that receives the deployment.
2. `REMOTE_HOST` [required] 2. `REMOTE_HOST` [required]
eg: mydomain.com eg: mydomain.com
3. `REMOTE_USER` [required] 3. `REMOTE_USER` [required]
eg: myusername eg: myusername
3. `REMOTE_PORT` (optional, default '22')
eg: '59184'
2. `ARGS` (optional, default '-rltgoDzvO') 2. `ARGS` (optional, default '-rltgoDzvO')
For any initial/required rsync flags, eg: `-avzr --delete` For any initial/required rsync flags, eg: `-avzr --delete`
+19 -16
View File
@@ -1,28 +1,31 @@
name: 'ssh deploy' name: "ssh deploy"
description: 'NodeJS action for FAST deployment with rsync/ssh' description: "NodeJS action for FAST deployment with rsync/ssh"
author: 'easingthemes' author: "easingthemes"
inputs: inputs:
SSH_PRIVATE_KEY: # Private Key SSH_PRIVATE_KEY: # Private Key
description: 'Private Key' description: "Private Key"
required: true required: true
REMOTE_HOST: REMOTE_HOST:
description: 'Remote host' description: "Remote host"
required: true required: true
REMOTE_USER: REMOTE_USER:
description: 'Remote user' description: "Remote user"
required: true required: true
REMOTE_PORT:
description: "Remote port"
default: "22"
SOURCE: SOURCE:
description: 'Source directory' description: "Source directory"
default: '' default: ""
TARGET: TARGET:
description: 'Target directory' description: "Target directory"
default: '/home/REMOTE_USER/' default: "/home/REMOTE_USER/"
outputs: outputs:
status: status:
description: 'Status' description: "Status"
runs: runs:
using: 'node12' using: "node12"
main: 'dist/index.js' main: "dist/index.js"
branding: branding:
color: 'green' color: "green"
icon: 'truck' icon: "truck"
+7 -5
View File
@@ -480,16 +480,16 @@ const commandExists = __webpack_require__(677);
const nodeCmd = __webpack_require__(428); const nodeCmd = __webpack_require__(428);
const nodeRsync = __webpack_require__(250); const nodeRsync = __webpack_require__(250);
const { REMOTE_HOST, REMOTE_USER, SSH_PRIVATE_KEY, DEPLOY_KEY_NAME, SOURCE, TARGET, ARGS, GITHUB_WORKSPACE, HOME } = process.env; const { REMOTE_HOST, REMOTE_USER, REMOTE_PORT, SSH_PRIVATE_KEY, DEPLOY_KEY_NAME, SOURCE, TARGET, ARGS, GITHUB_WORKSPACE, HOME } = process.env;
console.log('GITHUB_WORKSPACE', GITHUB_WORKSPACE); console.log('GITHUB_WORKSPACE', GITHUB_WORKSPACE);
const sshDeploy = (() => { const sshDeploy = (() => {
const rsync = ({ privateKey, src, dest, args }) => { const rsync = ({ privateKey, port, src, dest, args }) => {
console.log(`Starting Rsync Action: ${src} to ${dest}`); console.log(`Starting Rsync Action: ${src} to ${dest}`);
try { try {
// RSYNC COMMAND // RSYNC COMMAND
nodeRsync({ src, dest, args, privateKey, ssh: true, sshCmdArgs: ['-o StrictHostKeyChecking=no'], recursive: true }, (error, stdout, stderr, cmd) => { nodeRsync({ src, dest, args, privateKey, ssh: true, port, sshCmdArgs: ['-o StrictHostKeyChecking=no'], recursive: true }, (error, stdout, stderr, cmd) => {
if (error) { if (error) {
console.error('⚠️ Rsync error', error.message); console.error('⚠️ Rsync error', error.message);
process.abort(); process.abort();
@@ -509,14 +509,15 @@ const sshDeploy = (() => {
args, args,
host = 'localhost', host = 'localhost',
username, username,
privateKeyContent privateKeyContent,
port
}) => { }) => {
validateRsync(() => { validateRsync(() => {
const privateKey = addSshKey(privateKeyContent, DEPLOY_KEY_NAME ||'deploy_key'); const privateKey = addSshKey(privateKeyContent, DEPLOY_KEY_NAME ||'deploy_key');
const remoteDest = username + '@' + host + ':' + dest; const remoteDest = username + '@' + host + ':' + dest;
rsync({ privateKey, src, dest: remoteDest, args }); rsync({ privateKey, port, src, dest: remoteDest, args });
}); });
}; };
@@ -616,6 +617,7 @@ const run = () => {
dest: TARGET || '/home/' + REMOTE_USER + '/', dest: TARGET || '/home/' + REMOTE_USER + '/',
args: [ARGS] || false, args: [ARGS] || false,
host: REMOTE_HOST, host: REMOTE_HOST,
port: REMOTE_PORT || '22',
username: REMOTE_USER, username: REMOTE_USER,
privateKeyContent: SSH_PRIVATE_KEY, privateKeyContent: SSH_PRIVATE_KEY,
}); });
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "ssh-deploy", "name": "ssh-deploy",
"version": "2.0.0", "version": "2.1.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "ssh-deploy", "name": "ssh-deploy",
"version": "2.0.7", "version": "2.1.0",
"description": "This GitHub Action deploys specific directory from `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh.", "description": "This GitHub Action deploys specific directory from `GITHUB_WORKSPACE` to a folder on a server via rsync over ssh.",
"main": "src/index.js", "main": "src/index.js",
"dependencies": { "dependencies": {
+7 -5
View File
@@ -5,16 +5,16 @@ const commandExists = require('command-exists');
const nodeCmd = require('node-cmd'); const nodeCmd = require('node-cmd');
const nodeRsync = require('rsyncwrapper'); const nodeRsync = require('rsyncwrapper');
const { REMOTE_HOST, REMOTE_USER, SSH_PRIVATE_KEY, DEPLOY_KEY_NAME, SOURCE, TARGET, ARGS, GITHUB_WORKSPACE, HOME } = process.env; const { REMOTE_HOST, REMOTE_USER, REMOTE_PORT, SSH_PRIVATE_KEY, DEPLOY_KEY_NAME, SOURCE, TARGET, ARGS, GITHUB_WORKSPACE, HOME } = process.env;
console.log('GITHUB_WORKSPACE', GITHUB_WORKSPACE); console.log('GITHUB_WORKSPACE', GITHUB_WORKSPACE);
const sshDeploy = (() => { const sshDeploy = (() => {
const rsync = ({ privateKey, src, dest, args }) => { const rsync = ({ privateKey, port, src, dest, args }) => {
console.log(`Starting Rsync Action: ${src} to ${dest}`); console.log(`Starting Rsync Action: ${src} to ${dest}`);
try { try {
// RSYNC COMMAND // RSYNC COMMAND
nodeRsync({ src, dest, args, privateKey, ssh: true, sshCmdArgs: ['-o StrictHostKeyChecking=no'], recursive: true }, (error, stdout, stderr, cmd) => { nodeRsync({ src, dest, args, privateKey, ssh: true, port, sshCmdArgs: ['-o StrictHostKeyChecking=no'], recursive: true }, (error, stdout, stderr, cmd) => {
if (error) { if (error) {
console.error('⚠️ Rsync error', error.message); console.error('⚠️ Rsync error', error.message);
process.abort(); process.abort();
@@ -34,14 +34,15 @@ const sshDeploy = (() => {
args, args,
host = 'localhost', host = 'localhost',
username, username,
privateKeyContent privateKeyContent,
port
}) => { }) => {
validateRsync(() => { validateRsync(() => {
const privateKey = addSshKey(privateKeyContent, DEPLOY_KEY_NAME ||'deploy_key'); const privateKey = addSshKey(privateKeyContent, DEPLOY_KEY_NAME ||'deploy_key');
const remoteDest = username + '@' + host + ':' + dest; const remoteDest = username + '@' + host + ':' + dest;
rsync({ privateKey, src, dest: remoteDest, args }); rsync({ privateKey, port, src, dest: remoteDest, args });
}); });
}; };
@@ -141,6 +142,7 @@ const run = () => {
dest: TARGET || '/home/' + REMOTE_USER + '/', dest: TARGET || '/home/' + REMOTE_USER + '/',
args: [ARGS] || ['-rltgoDzvO'], args: [ARGS] || ['-rltgoDzvO'],
host: REMOTE_HOST, host: REMOTE_HOST,
port: REMOTE_PORT || '22',
username: REMOTE_USER, username: REMOTE_USER,
privateKeyContent: SSH_PRIVATE_KEY, privateKeyContent: SSH_PRIVATE_KEY,
}); });