Deployment Directories

Amezmo maintains 2 root directories inside your instance to implement atomic deployments. Throughout this documentation, we refer to the "current release directory" as the directory that was created as a result of a succesfull deployment.

Directories

The timestamp variable is in the form of YYYY-MM-DDTHH:MM:SS.mmmmmm, and the commit ID is short form version of the SHA1 Git commit hash.

    
/webroot
    |----current -> /webroot/release/${TIMESTAMP}.${COMMIT_ID}
    |----release
    |-------${TIMESTAMP}.${COMMIT_ID}
    |-------${TIMESTAMP}.${COMMIT_ID}
    

Successful deployments

All of the following conditions must be met for a deployment to be considered succesful

  • The GitHub repository and branch exists and is visible from Amezmo
  • No zero non-zero exit status codes from any of your hooks

When a deployment succeeds, Amezmo creates a new directory under /webroot/release. The directory created is effectively the result of running git pull at the time the deployment was executed. If your deployment succeeds, Amezmo will create a directory of the following pattern.

    
        /webroot/release/${TIMESTAMP}.${COMMIT_ID}
    

As a final step in the deployment process, the symbolic link located at /webroot/current is atomically updated to point the new release directory.

Failed deployments

For a deployment to enter the Failed state, any of the following conditions must be met:

  • Amezmo cannot validate the GitHub repository and branch.
  • Any hook, except for before.pull, exits with a non-zero status.

When a deployment step fails, the process will be aborted. This means that your current release will not be affected by a failed deployment, as Amezmo only updates your symbolic link as a final step in the process.

Need support?

We're always happy to help with either application or infrastructure questions Always feel free to reach out to us on Twitter, or contact support.

Subscribe