Need help with shipit-deploy?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

shipitjs
319 Stars 86 Forks 201 Commits 0 Opened issues

Description

Set of deployment tasks for Shipit based on git and rsync commands.

Services available

!
?

Need anything else?

Contributors list

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

This repository has moved to Shipit main repository

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

shipit-deploy

Gitter

Build Status Dependency Status devDependency Status

Set of deployment tasks for Shipit based on git and rsync commands.

Features:

  • Deploy tag, branch or commit
  • Add additional behaviour using hooks
  • Build your project locally or remotely
  • Easy rollback

Install

npm install shipit-deploy

If you are deploying from Windows, you may want to have a look at the wiki page about usage in Windows.

Usage

Example
shipitfile.js

module.exports = function (shipit) {
  require('shipit-deploy')(shipit);

shipit.initConfig({ default: { workspace: '/tmp/github-monitor', deployTo: '/tmp/deploy_to', repositoryUrl: 'https://github.com/user/repo.git', ignores: ['.git', 'node_modules'], keepReleases: 2, deleteOnRollback: false, key: '/path/to/key', shallowClone: true }, staging: { servers: '[email protected]' } }); };

To deploy on staging, you must use the following command :

shipit staging deploy

You can rollback to the previous releases with the command :

shipit staging rollback

Options

workspace

Type:

String

Define a path to an empty directory where Shipit builds it's syncing source. Beware to not set this path to the root of your repository as shipit-deploy cleans the directory at the given path as a first step.

dirToCopy

Type:

String
Default: same as workspace

Define directory within the workspace which should be deployed.

deployTo

Type:

String

Define the remote path where the project will be deployed. A directory

releases
is automatically created. A symlink
current
is linked to the current release.

repositoryUrl

Type:

String

Git URL of the project repository.

If empty Shipit will try to deploy without pulling the changes.

In edge cases like quick PoC projects without a repository or a living on the edge production patch applying this can be helpful.

branch

Type:

String

Tag, branch or commit to deploy.

ignores

Type:

Array

An array of paths that match ignored files. These paths are used in the rsync command.

deleteOnRollback

Type:

Boolean

Whether or not to delete the old release when rolling back to a previous release.

key

Type:

String

Path to SSH key

keepReleases

Type:

Number

Number of releases to keep on the remote server.

shallowClone

Type:

Boolean

Perform a shallow clone. Default:

false
.

updateSubmodules

Type: Boolean

Update submodules. Default:

false
.

gitConfig

type:

Object

Custom git configuration settings for the cloned repo.

gitLogFormat

Type:

String

Log format to pass to

git log
. Used to display revision diffs in

pending
task. Default:
%h: %s - %an
.

rsyncFrom

Type:

String
Optional

When deploying from Windows, prepend the workspace path with the drive letter. For example

/d/tmp/workspace
if your workspace is located in
d:\tmp\workspace
. By default, it will run rsync from the workspace folder.

copy

Type:

String

Parameter to pass to

cp
to copy the previous release. Non NTFS filesystems support
-r
. Default:
-a

Variables

Several variables are attached during the deploy and the rollback process:

shipit.config.*

All options described in the config sections are available in the

shipit.config
object.

shipit.repository

Attached during

deploy:fetch
task.

You can manipulate the repository using git command, the API is describe in gift.

shipit.releaseDirname

Attached during

deploy:update
and
rollback:init
task.

The current release dirname of the project, the format used is "YYYYMMDDHHmmss" (moment format).

shipit.releasesPath

Attached during

deploy:init
,
rollback:init
, and
pending:log
tasks.

The remote releases path.

shipit.releasePath

Attached during

deploy:update
and
rollback:init
task.

The complete release path :

path.join(shipit.releasesPath, shipit.releaseDirname)
.

shipit.currentPath

Attached during

deploy:init
,
rollback:init
, and
pending:log
tasks.

The current symlink path :

path.join(shipit.config.deployTo, 'current')
.

Workflow tasks

  • deploy
    • deploy:init
    • Emit event "deploy".
    • deploy:fetch
    • Create workspace.
    • Initialize repository.
    • Add remote.
    • Fetch repository.
    • Checkout commit-ish.
    • Merge remote branch in local branch.
    • Emit event "fetched".
    • deploy:update
    • Create and define release path.
    • Remote copy project.
    • Emit event "updated".
    • deploy:publish
    • Update symlink.
    • Emit event "published".
    • deploy:clean
    • Remove old releases.
    • Emit event "cleaned".
    • deploy:finish
    • Emit event "deployed".
  • rollback
    • rollback:init
    • Define release path.
    • Emit event "rollback".
    • deploy:publish
    • Update symlink.
    • Emit event "published".
    • deploy:clean
    • Remove old releases.
    • Emit event "cleaned".
    • rollback:finish
    • Emit event "rollbacked".
  • pending
    • pending:log
    • Log pending commits (diff between HEAD and currently deployed revision) to console.

Dependencies

Local

  • git 1.7.8+
  • rsync 3+
  • OpenSSH 5+

Remote

  • GNU coreutils 5+

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.