grunt-fabric-deploy
grunt-fabric-deploy copied to clipboard
Fabric like deploy plugin for Grunt.js
grunt-fabric-deploy v0.0.6
Provides Fabric (python) like deploy tasks
Getting Started
This plugin requires Grunt ~0.4.5
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-fabric-deploy --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-fabric-deploy');
*This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that you upgrade.
Deploy task
Run this task with the grunt deploy
command.
Task operations
local
Executes given commands in the local shell.
Examples:
task_one:
local: ''
Operations defined as array:
task_one:
local: [
'',
''
]
put
Puts file(s) on a remote server via scp.
Requirements:
You need to provide host
, user
and port
for the ssh connection.
Examples:
options: {
variables: {
host: 'server.com',
user: 'user',
port: '22'
}
},
task_one: {
put: {
src: '/tmp/file.zip', // local path
dest: '/tmp/file.zip' // path on remote server
}
}
Operations defined as array:
options: {
variables: {
host: 'server.com',
user: 'user',
port: '22'
}
},
task_one: {
put: [
{
src: '/tmp/file.zip',
dest: '/tmp/file.zip'
},
{
src: '/tmp/file.zip',
dest: '/tmp/file.zip'
}
]
}
run
Executes given commands on the remote server.
Requirements:
You need to provide host
, user
and port
for the ssh connection.
Examples:
options: {
variables: {
host: 'server.com',
user: 'user',
port: '22'
}
},
task_one: {
run: 'cat /tmp/file.txt'
}
Operations defined as array:
options: {
variables: {
host: 'server.com',
user: 'user',
port: '22'
}
},
task_one: {
run: [
'echo "test" > /tmp/file.txt',
'cat /tmp/file.txt'
]
}
Task Grouping
You can group tasks to define tasks and subtasks.
Examples:
staging: {
pack: {
local: 'touch /tmp/file.txt'
},
upload: {
put: {
src: '/tmp/file.txt',
dest: '/tmp/file.txt'
}
run: 'cat /tmp/file.txt'
}
}
production: {
pack: {
local: 'touch /tmp/live-file.txt'
},
upload: {
put: {
src: '/tmp/live-file.txt',
dest: '/tmp/live-file.txt'
}
run: [
'cat /tmp/live-file.txt',
'mv /tmp/live-file.txt /www/server.com/public/index.html'
]
}
}
You can call the groups separately: grunt deploy:staging
or grunt deploy:production
.
Options
stdout
Type: Boolean
false
Default: 'false'
Boolean switch for showing the output of each command.
Example:
options: {
stdout: true
}
failOnError
Type: Boolean
false
Default: 'false'
Boolean switch for failing on an error.
Example:
options: {
failOnError: true
}
variables
Type: Object
Object with variables that can be used in each command.
Variables in a string are placed in brackets {}
.
This object can be on task level as well (see examples).
Example:
options: {
variables: {
var_a: 'test'
}
}
task_one: {
local: 'echo "{var_a}"'
}
Usage Examples
deploy: {
options: {
variables: {
packed: 'filename'
host: 'server.com',
port: 22,
user: 'deploy_user'
}
},
pack: {
local: '/usr/bin/gnutar -zcf /tmp/{packed}.tar.gz -C ./ .'
},
staging: {
put: {
src: '/tmp/{packed}.tar.gz',
dest: '/tmp/{packed}.tar.gz'
},
run: [
'rm -rf /tmp/{packed}',
'mkdir -p /tmp/{packed}',
'tar -zxf /tmp/{packed}.tar.gz -C /tmp/{packed}',
'rm -rf /srv/www/server.com/public',
'mkdir -p /srv/www/server.com/public',
'mv /tmp/{packed}/* /srv/www/server.com/public/'
]
},
production: {
variables: {
host: 'server-production.com'
}
put: {
src: '/tmp/{packed}.tar.gz',
dest: '/tmp/{packed}.tar.gz'
},
run: [
'echo $PATH'
]
}
}
Release History
- 2015-05-21 v0.0.6 Replacing exe dependency with https://github.com/gvarsanyi/sync-exec Fixing all dependency version numbers
- 2014-06-27 v0.0.5 Removing console.log references
- 2014-06-27 v0.0.4 Variables on task level, merged into global variables
- 2013-10-03 v0.0.3 Better docs Refactor Grouping
- 2013-10-03 v0.0.2 Added stdout + failOnError options
- 2013-10-02 v0.0.1 Initial version
Task submitted by Pieter Michels
This file was generated on Thu May 21 2015 17:33:20.