@superbiche/shipit-shared v4.4.2-0.0.3
shipit-shared
A set of tasks for Shipit used for symlinking persistent (un-sourced) files and directories on deploy.
Based on the concept of linked_files/linked_dirs from Capistrano
Features:
- By default, the sharedtask is triggered on theupdatedevent from shipit-deploy
- All necessary directories are always created for you, whether you are linking a file or a directory.
- Optionally set permissions on files.
- Works via shipit-cli and grunt-shipit
Roadmap
- Optionally copy example files, such as example config files
Install
npm install shipit-sharedUsage
Example shipitfile.js
module.exports = function (shipit) {
  require('shipit-deploy')(shipit);
  require('shipit-shared')(shipit);
  shipit.initConfig({
    default: {
      shared: {
        overwrite: true,
        dirs: [
          'public/storage',
          {
            path: 'db',
            overwrite: false,
            chmod: '-R 777',
          }
        ],
        files: [
          'config/environment.yml',
          {
            path: 'config/database.yml',
            overwrite: false,
            chmod: '755',
          }
        ],
      }
    }
  });
};To trigger on the deploy published event, you can simply deploy:
shipit staging deployOr you can run the tasks separately :
shipit staging shared
    shipit staging shared:create-dirs
    shipit staging shared:link
        shipit staging shared:link:dirs
        shipit staging shared:link:filesOptions shipit.config.shared
shared.dirs, shared.files
Type: Array
An array of files/directories to symlink into current. String values inherit default settings, objects allow per-item configuration:
'public/storage'
{
  path: 'db',
  overwrite: true,
  chmod: '-R 777'
}path
Type: String
Path to the shared file/directory (relative to current). 
overwrite
Type: Boolean
If the target of the symlink exists in current, remove it before creating symlink.
chmod
Type: String
Options passed to the chmod command for the given path. 
shared.basePath
Type: String
Default: path.join(shipit.config.deployTo, 'shared')
The path where your shared files reside.
shared.overwrite
Type: Boolean
Default: false
If true, the target of your symlink (in current), will be removed (via rm -rf) before creating the symlink. Under normal circumstances, this is fine, as files in current have come directly from a git checkout.
If false and the target of your symlink is a file or directory, and error is thrown and the task aborted.
The default setting of false is a safety precaution to prevent unintentionally losing data. See https://github.com/timkelty/shipit-shared/issues/17
shared.symlinkPath
Type: String
Default: shared.basePath
The path that will serve as the source for your symlink. This is usually the same as shared.basePath, however it can be necessary to set this in a chroot environment.
shared.triggerEvent
Type: String, Boolean
Default: updated
Trigger shared task on given event name.
Set to false to prevent task from listening to any events.
(note: Some part of shipit-shared besides initConfig needs to be run before it can listen for events)
Events
- shared- shared:prepare- shared:create-dirs- Emit event sharedDirsCreated
 
- Emit event 
- shared:set-permissions- Emit event sharedPermissionsSet
 
- Emit event 
 
- shared:link- shared:link-dirs- Emit event sharedFilesDirs
 
- Emit event 
- shared:link-files- Emit event sharedFilesLinked
 
- Emit event 
 
- shared:end- Emit event sharedEnd
 
- Emit event 
 
License
MIT