@joerx/shipit-shared v4.4.2
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
sharedshared:prepareshared:create-dirs- Emit event
sharedDirsCreated
- Emit event
shared:set-permissions- Emit event
sharedPermissionsSet
- Emit event
shared:linkshared:link-dirs- Emit event
sharedFilesDirs
- Emit event
shared:link-files- Emit event
sharedFilesLinked
- Emit event
shared:end- Emit event
sharedEnd
- Emit event
License
MIT
9 years ago