UNPKG

grunt-deliver

Version:
195 lines (144 loc) 4.65 kB
# 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](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: ```shell npm install grunt-deliver --save-dev ``` Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: ```js 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](http://gruntjs.com/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 ```js 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: ```yml 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](https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin) example: ```ini DELIVER_STAGE_HOST=yourhost.com DELIVER_STAGE_USER=username ``` Store passwords in "password values" section. --- ## Release history