ssh-delivery
v0.2.8
Published
Do fast files deploy with SFTP. Support servers chain.
Downloads
5
Readme
SSH-Delivery
Do fast files deploy with SFTP. Support servers chain.
Install
npm install -g ssh-delivery
Configure
Create config with tasks and servers declaration. Default config file names :
.deliveryrc
.deliveryrc.js
.delivery.config.js
delivery.config.js
const fs = require('fs');
const path = require('path');
module.exports = {
// SSH servers (all server options see at https://github.com/mscdex/ssh2#client-methods `connect` method)
// Upload destination servers should support SFTP. Gateway servers should support port forwarding.
servers: {
gate: {
alias: 'gate',
host: 'gate.myweb.com',
username: 'root',
password: 'secret',
},
web: {
host: 'myweb.com',
port: 41022,
username: 'root',
privateKey: fs.readFileSync(path.resolve(os.homedir(), '.ssh', 'id_rsa')),
passphrase: 'secret',
via: 'gate', // Connection to this server will be made via 'gate' server
},
},
// Delivery tasks
tasks: {
deployToWebServer: {
// Commands before uploading
before: {
run: ['npm run build'],
},
// Files to upload
src: {
path: './build/',
},
// Where should upload
dst: {
server: 'web', // server name from servers-section
path: '/var/www/html', // path on remote server
},
// Commands after uploading
after: {
run: ['rm -rf ./build'],
},
},
},
};
You can keep servers options secure in your home directory. Create $HOME/.delivery.js
with content like this:
const fs = require('fs');
const os = require('os');
const path = require('path');
module.exports = {
servers: {
gate: {
alias: 'gate',
host: 'gate.myweb.com',
username: 'root',
password: 'secret',
},
web: {
host: 'myweb.com',
port: 41022,
username: 'root',
privateKey: fs.readFileSync(path.resolve(os.homedir(), '.ssh', 'id_rsa')),
passphrase: 'secret',
via: 'gate', // Connection to this server will be made via 'gate' server
},
},
}
and use serves gate
and web
in your separate configs without redeclaration.
Run
Run static
task with
delivery deployToWebServer
or with custom config path
delivery deployToWebServer -c ./custom-config.js
You can keep servers options with credentials in separate config