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
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
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago