Deliver codebase to remote server.
This plugin requires Grunt >=0.4.0
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-deliver --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-deliver');
Run this task with the grunt deliver
command.
Task targets, files and options may be specified according to the grunt Configuring tasks guide.
Type: String
Default: lftp
Values: lftp
, rsync
(yet not supported)
Declare protocol used for data transfer.
Type: Array
Values: bower
, composer
, dev-node
, git
, github
, ide
, laravel
, npm
, phpunit
, sass
Identify project nature. Each pattern include some deploy ignore definitions.
Type: String
Type: String
Type: String
Type: Object
- enabled: true,
- stamp: 'yyyymmddHHMMss',
- keep: 4
Type: Array
Type: Integer
Type: Integer
Type: Array
Type: Object
grunt.initConfig({
deliver: {
options: {
// Protocol driver: lftp
driver: 'lftp',
protocol: 'sftp', // ftp
ssl_allow: false,
sync_mode: false,
// Project patterns: bower, composer, dev-node, git, github, ide, laravel, npm, phpunit, sass
patterns: ['git', 'github', 'sass', 'bower', 'npm', 'dev-node', 'laravel'],
// Authorisation key
auth: 'main',
// Default source path
src: 'dist',
// Default target path
target: '/beta',
// Default backup option
backup: {
enabled: false,
stamp: 'yyyymmddHHMMss',
keep: 4
},
// Project cache
cache: ['tmp', 'app/storage/cache', 'app/storage/views', 'app/storage/twig'],
// Connection settings
connections_limit: 4,
parallel_count: 4,
// Notification tasks
notify: ['slack', 'hipchat'],
// Message templates
messages: {
success: 'Delivery to "{target}" finished.',
fail: 'Delivery to "{target}" failed.'
}
},
// Example of stage target
stage: {
name: 'Stage',
branch: 'develop',
auth: 'stage',
src: 'dev',
target: '/beta'
},
// Example of production target
production: {
name: 'Production',
branch: 'master',
src: 'dist',
target: '/www',
backup: true
}
}
});
You can define which files or folders needs to be excluded in .deliver-ignore
file.
Wildchars are supported. For folders use /
suffix.
.git/
node_modules/
temp/
.deliver-secret.yml
.gitignore
Secret data are stored in .deliver-secret.yml
file for local development only.
If you do put this filename to .gitignore
!
stage:
host: [HOSTNAME]
user: [USERNAME]
password: [PASSWORD]
production:
host: [HOSTNAME]
user: [USERNAME]
password: [PASSWORD]
For building with your production runners like Jenkins, etc. use environment variables and consider to keep passwords encrypted.
Task checks variables in this name format:
DELIVER_[TASK_TARGET]_(HOST|USER|PASSWORD)
;
Jenkins EnvInject plugin example:
DELIVER_STAGE_HOST=yourhost.com
DELIVER_STAGE_USER=username
Store passwords in "password values" section.