This commit is contained in:
Dragan Filipovic 2023-01-02 18:51:30 +01:00
parent ce6f4a562e
commit 4e7456f7be
3 changed files with 21 additions and 18 deletions

2
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@ -24,7 +24,7 @@ const run = async () => {
} }
// Check Script before // Check Script before
if (scriptBefore) { if (scriptBefore) {
await remoteCmdBefore(scriptBefore); await remoteCmdBefore(scriptBefore, privateKeyPath);
} }
/* eslint-disable object-property-newline */ /* eslint-disable object-property-newline */
await sshDeploy({ await sshDeploy({
@ -33,7 +33,7 @@ const run = async () => {
}); });
// Check script after // Check script after
if (scriptAfter) { if (scriptAfter) {
await remoteCmdAfter(scriptAfter); await remoteCmdAfter(scriptAfter, privateKeyPath);
} }
}; };

View File

@ -1,6 +1,5 @@
const { exec } = require('child_process'); const { exec } = require('child_process');
const { sshServer, githubWorkspace } = require('./inputs');
const { privateKey, sshServer, githubWorkspace } = require('./inputs');
const { writeToFile } = require('./helpers'); const { writeToFile } = require('./helpers');
const handleError = (message, isRequired, callback) => { const handleError = (message, isRequired, callback) => {
@ -11,27 +10,31 @@ const handleError = (message, isRequired, callback) => {
} }
}; };
const remoteCmd = async (content, label, isRequired) => new Promise((resolve, reject) => { // eslint-disable-next-line max-len
const remoteCmd = async (content, privateKeyPath, isRequired, label) => new Promise((resolve, reject) => {
const filename = `local_ssh_script-${label}.sh`; const filename = `local_ssh_script-${label}.sh`;
try { try {
writeToFile({ dir: githubWorkspace, filename, content }); writeToFile({ dir: githubWorkspace, filename, content });
console.log(`Executing remote script: ssh -i ${privateKey} ${sshServer}`, content); console.log(`Executing remote script: ssh -i ${privateKeyPath} ${sshServer}`, content);
exec(`DEBIAN_FRONTEND=noninteractive ssh -i ${privateKey} ${sshServer} 'RSYNC_STDOUT=${process.env.RSYNC_STDOUT} bash -s' < ${filename}`, (err, data, stderr) => { exec(
if (err) { `DEBIAN_FRONTEND=noninteractive ssh -i ${privateKeyPath} ${sshServer} 'RSYNC_STDOUT=${process.env.RSYNC_STDOUT} bash -s' < ${filename}`,
const message = `⚠️ [CMD] Remote script failed: ${err.message}`; (err, data, stderr) => {
console.warn(`${message} \n`, data, stderr); if (err) {
handleError(message, isRequired, reject); const message = `⚠️ [CMD] Remote script failed: ${err.message}`;
} else { console.warn(`${message} \n`, data, stderr);
console.log('✅ [CMD] Remote script executed. \n', data, stderr); handleError(message, isRequired, reject);
resolve(data); } else {
console.log('✅ [CMD] Remote script executed. \n', data, stderr);
resolve(data);
}
} }
}); );
} catch (err) { } catch (err) {
handleError(err.message, isRequired, reject); handleError(err.message, isRequired, reject);
} }
}); });
module.exports = { module.exports = {
remoteCmdBefore: async (cmd, isRequired) => remoteCmd(cmd, 'before', isRequired), remoteCmdBefore: async (cmd, privateKeyPath, isRequired) => remoteCmd(cmd, privateKeyPath, isRequired, 'before'),
remoteCmdAfter: async (cmd, isRequired) => remoteCmd(cmd, 'after', isRequired) remoteCmdAfter: async (cmd, privateKeyPath, isRequired) => remoteCmd(cmd, privateKeyPath, isRequired, 'after')
}; };