mirror of
https://github.com/easingthemes/ssh-deploy.git
synced 2024-11-19 08:08:05 +08:00
Compare commits
19 Commits
v4.1.3
...
3cd2cdf0ef
Author | SHA1 | Date | |
---|---|---|---|
|
3cd2cdf0ef | ||
|
3405be3b42 | ||
|
3884c8554f | ||
|
168ff9f4b8 | ||
|
98025d680e | ||
|
88cc5ade97 | ||
|
ad7eefb5ae | ||
|
54dca654be | ||
|
b0ee052eb0 | ||
|
2fbb06015d | ||
|
51b2009841 | ||
|
530a3691f2 | ||
|
509caf1bb9 | ||
|
54f8b6c60b | ||
|
d9d134f8e5 | ||
|
e7b2312bc9 | ||
|
f0c02fb2a5 | ||
|
ae4970d4cf | ||
|
5894f5e290 |
@@ -113,11 +113,11 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v1
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '10.x'
|
||||
node-version: '16.x'
|
||||
- name: Install npm dependencies
|
||||
run: npm install
|
||||
- name: Run build task
|
||||
@@ -149,6 +149,8 @@ I've added e2e test for this action.
|
||||
Real example is executed on every PR merge to `main`.
|
||||
Check actions tab for example.
|
||||
|
||||
When opening an issue, please add example of your step with env vars. You can add dummy values.
|
||||
|
||||
More info for SSH keys: https://www.ssh.com/ssh/public-key-authentication
|
||||
|
||||
## Tips
|
||||
|
2
dist/index.js
vendored
2
dist/index.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,3 +1,38 @@
|
||||
## [4.1.8](https://github.com/easingthemes/ssh-deploy/compare/v4.1.7...v4.1.8) (2023-02-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* rebuild and update readme ([98025d6](https://github.com/easingthemes/ssh-deploy/commit/98025d680e96a5c6c805e377a1b81de2f626aa1e))
|
||||
|
||||
## [4.1.7](https://github.com/easingthemes/ssh-deploy/compare/v4.1.6...v4.1.7) (2023-02-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* [#120](https://github.com/easingthemes/ssh-deploy/issues/120) check undefined data ([2fbb060](https://github.com/easingthemes/ssh-deploy/commit/2fbb06015d1a6ffd32e0100aaf1a1a46949e990e))
|
||||
|
||||
## [4.1.6](https://github.com/easingthemes/ssh-deploy/compare/v4.1.5...v4.1.6) (2023-02-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* [#118](https://github.com/easingthemes/ssh-deploy/issues/118) check undefined default values rebuild ([54f8b6c](https://github.com/easingthemes/ssh-deploy/commit/54f8b6c60b8f2f926d5ed9538557e5521a905d87))
|
||||
|
||||
## [4.1.5](https://github.com/easingthemes/ssh-deploy/compare/v4.1.4...v4.1.5) (2023-02-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* [#118](https://github.com/easingthemes/ssh-deploy/issues/118) check undefined default values ([f0c02fb](https://github.com/easingthemes/ssh-deploy/commit/f0c02fb2a5b3b69bb91004dd49d409eb6adfe7cd))
|
||||
|
||||
## [4.1.4](https://github.com/easingthemes/ssh-deploy/compare/v4.1.3...v4.1.4) (2023-02-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* [#113](https://github.com/easingthemes/ssh-deploy/issues/113) limit ssh script input ([5894f5e](https://github.com/easingthemes/ssh-deploy/commit/5894f5e29008feccaf42787330ec8f49f3ad50b0))
|
||||
|
||||
## [4.1.3](https://github.com/easingthemes/ssh-deploy/compare/v4.1.2...v4.1.3) (2023-02-21)
|
||||
|
||||
|
||||
|
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@draganfilipovic/ssh-deploy",
|
||||
"version": "4.0.5",
|
||||
"version": "4.1.7",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@draganfilipovic/ssh-deploy",
|
||||
"version": "4.0.5",
|
||||
"version": "4.1.7",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"rsyncwrapper": "^3.0.1"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@draganfilipovic/ssh-deploy",
|
||||
"version": "4.1.3",
|
||||
"version": "4.1.8",
|
||||
"description": "Fast NodeJS action to deploy specific directory from `GITHUB_WORKSPACE` to a server via rsync over ssh.",
|
||||
"main": "dist/index.js",
|
||||
"files": [
|
||||
|
@@ -10,7 +10,11 @@ const githubWorkspace = process.env.GITHUB_WORKSPACE;
|
||||
const remoteUser = process.env.REMOTE_USER || process.env.INPUT_REMOTE_USER;
|
||||
|
||||
const defaultInputs = {
|
||||
source: '',
|
||||
target: `/home/${remoteUser}/`,
|
||||
exclude: '',
|
||||
args: '-rlgoDzvc -i',
|
||||
sshCmdArgs: '-o StrictHostKeyChecking=no',
|
||||
deployKeyName: `deploy_key_${remoteUser}_${Date.now()}`
|
||||
};
|
||||
|
||||
@@ -21,18 +25,19 @@ const inputs = {
|
||||
inputNames.forEach((input) => {
|
||||
const inputName = snakeToCamel(input.toLowerCase());
|
||||
const inputVal = process.env[input] || process.env[`INPUT_${input}`] || defaultInputs[inputName];
|
||||
let extendedVal = inputVal;
|
||||
const validVal = inputVal === undefined ? defaultInputs[inputName] : inputVal;
|
||||
let extendedVal = validVal;
|
||||
// eslint-disable-next-line default-case
|
||||
switch (inputName) {
|
||||
case 'source':
|
||||
extendedVal = inputVal.split(' ').map((src) => `${githubWorkspace}/${src}`);
|
||||
extendedVal = validVal.split(' ').map((src) => `${githubWorkspace}/${src}`);
|
||||
break;
|
||||
case 'args':
|
||||
extendedVal = inputVal.split(' ');
|
||||
extendedVal = validVal.split(' ');
|
||||
break;
|
||||
case 'exclude':
|
||||
case 'sshCmdArgs':
|
||||
extendedVal = inputVal.split(',').map((item) => item.trim());
|
||||
extendedVal = validVal.split(',').map((item) => item.trim());
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -15,16 +15,18 @@ const remoteCmd = async (content, privateKeyPath, isRequired, label) => new Prom
|
||||
const filename = `local_ssh_script-${label}.sh`;
|
||||
try {
|
||||
writeToFile({ dir: githubWorkspace, filename, content });
|
||||
const dataLimit = 10000;
|
||||
const rsyncStdout = (process.env.RSYNC_STDOUT || '').substring(0, dataLimit);
|
||||
console.log(`Executing remote script: ssh -i ${privateKeyPath} ${sshServer}`);
|
||||
exec(
|
||||
`DEBIAN_FRONTEND=noninteractive ssh -p ${(remotePort || 22)} -i ${privateKeyPath} -o StrictHostKeyChecking=no ${sshServer} 'RSYNC_STDOUT="${process.env.RSYNC_STDOUT}" bash -s' < ${filename}`,
|
||||
(err, data, stderr) => {
|
||||
`DEBIAN_FRONTEND=noninteractive ssh -p ${(remotePort || 22)} -i ${privateKeyPath} -o StrictHostKeyChecking=no ${sshServer} 'RSYNC_STDOUT="${rsyncStdout}" bash -s' < ${filename}`,
|
||||
(err, data = '', stderr = '') => {
|
||||
if (err) {
|
||||
const message = `⚠️ [CMD] Remote script failed: ${err.message}`;
|
||||
console.warn(`${message} \n`, data, stderr);
|
||||
handleError(message, isRequired, reject);
|
||||
} else {
|
||||
const limited = data.substring(0, 10000);
|
||||
const limited = data.substring(0, dataLimit);
|
||||
console.log('✅ [CMD] Remote script executed. \n', limited, stderr);
|
||||
resolve(limited);
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
const { join } = require('path');
|
||||
const { execSync } = require('child_process');
|
||||
const { EOL } = require('os');
|
||||
const { writeToFile } = require('./helpers');
|
||||
|
||||
const KNOWN_HOSTS = 'known_hosts';
|
||||
@@ -18,9 +19,9 @@ const getPrivateKeyPath = (filename = '') => {
|
||||
const addSshKey = (content, deployKeyName) => {
|
||||
const { dir, filename } = getPrivateKeyPath(deployKeyName);
|
||||
writeToFile({ dir, filename: KNOWN_HOSTS, content: '' });
|
||||
console.log('✅ [SSH] known_hosts file ensured', dir);
|
||||
writeToFile({ dir, filename, content: `${content}\r\n`, isRequired: true, mode: '0400' });
|
||||
console.log('✅ [SSH] key added to `.ssh` dir ', dir, filename);
|
||||
console.log('??? [SSH] known_hosts file ensured', dir);
|
||||
writeToFile({ dir, filename, content: `${content}${EOL}`, isRequired: true, mode: '0400' });
|
||||
console.log('??? [SSH] key added to `.ssh` dir ', dir, filename);
|
||||
};
|
||||
|
||||
const updateKnownHosts = (host, remotePort) => {
|
||||
@@ -31,9 +32,9 @@ const updateKnownHosts = (host, remotePort) => {
|
||||
stdio: 'inherit'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('❌ [SSH] Adding host to `known_hosts` ERROR', host, error.message);
|
||||
console.error('??? [SSH] Adding host to `known_hosts` ERROR', host, error.message);
|
||||
}
|
||||
console.log('✅ [SSH] Adding host to `known_hosts` DONE', host, knownHostsPath);
|
||||
console.log('??? [SSH] Adding host to `known_hosts` DONE', host, knownHostsPath);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
|
Reference in New Issue
Block a user