grunt-deliver

0.0.1-alpha.13 • Public • Published

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

Package Sidebar

Install

npm i grunt-deliver

Weekly Downloads

0

Version

0.0.1-alpha.13

License

MIT

Last publish

Collaborators

  • vitre