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
shared
task is triggered on theupdated
event 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-shared
Usage
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 deploy
Or 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:files
Options 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
9 years ago
9 years ago
9 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
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
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