grunt-deliver v0.0.1-alpha.13
grunt-deliver v0.0.1-alpha
Deliver codebase to remote server.
Getting Started
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');
Deliver task
Run this task with the grunt deliver
command.
Task targets, files and options may be specified according to the grunt Configuring tasks guide.
Options
driver
Type: String
Default: lftp
Values: lftp
, rsync
(yet not supported)
Declare protocol used for data transfer.
patterns
Type: Array
Values: bower
, composer
, dev-node
, git
, github
, ide
, laravel
, npm
, phpunit
, sass
Identify project nature. Each pattern include some deploy ignore definitions.
auth
Type: String
src
Type: String
target
Type: String
backup
Type: Object
- enabled: true,
- stamp: 'yyyymmddHHMMss',
- keep: 4
cache
Type: Array
connection_limit
Type: Integer
parallel_count
Type: Integer
notify
Type: Array
messages
Type: Object
Example
Basic stage/production configuration
grunt.initConfig({
deliver: {
options: {
// Protocol driver: lftp
driver: 'lftp',
// 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
upload: {
connections: 10,
parallel: 2
},
download: {
connections: 20,
parallel: 5
},
// 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
}
}
});
Ignore file
You can define which files or folders needs to be excluded in .deliver-ignore
file.
Wildchars are supported. For folders use /
suffix.
.deliver-ignore example:
.git/
node_modules/
temp/
.deliver-secret.yml
.gitignore
Secrets
Secret data are stored in .deliver-secret.yml
file for local development only.
If you do put this filename to .gitignore
!
.deliver-secret.yml example:
stage:
host: [HOSTNAME]
user: [USERNAME]
password: [PASSWORD]
production:
host: [HOSTNAME]
user: [USERNAME]
password: [PASSWORD]
Environment variables
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.
Release history
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago