The root path of this structure can be defined with the configuration variable path.

Default path is /home/%(user)s/www/%(app_name)s.

Assuming your deploy.yml contains this:

user: deploy
app_name: example

Then you project will be deployed to /home/deploy/www/example.

If you have special demand, you can rewrite path in your deploy.yml:

user: deploy
app_name: example
path: /var/www/example

Basic Structure

The directory hierarchy on each remote host is strictly defined. Inspecting the tree inside path may look like this:

├── current -> /home/deploy/www/example/releases/160323-164537
├── releases
│   ├── 160323-164333
│   ├── 160323-164407
│   ├── 160323-164537
│   │   ├── configs
│   │   │   └── supervisor_staging_app.conf -> /home/deploy/www/example/shared/configs/supervisor_staging_app.conf
└── shared
    ├── configs
    │   └── supervisor_staging_app.conf

Latest Releases

releases is a directory contains several latest deployments.

A directory naming with %y%m%d-%H%M%S will be created after a deployment starting.

Default path is %(path)s/releases.

Current Release

current is a symlink to latest deployment listed in releases directory.

This symlink is updated at the end of a successful deployment. If the deployment fails in any step the current symlink still points to the old release.

If you are releasing a new deployment, current will be symlink to newly created directory. If you are rollbacking an old deployment, current will be symlink to elderly existed directory.

Default symlink is %(path)s/current.

Shared files or directories

shared is a directory contains files and directories that will be symlinked in each release.

Default path is %(path)s/shared.