Deployment and Releases (beta)

This is probably the number one requested feature in Beanstalk, and it’s here for all paid accounts! Right now deployment tools are available to account admins only.

What is it?

Releases allow you to specify S/FTP servers for your repository where you can manually or automatically upload your repository files to a server. This way, you can make some changes and Beanstalk will take care of the annoying details of getting it out to the public or your team.

How does it work?

The deployment tool is more like a synchronization rather than an upload. To maintain bandwidth and speed, Beanstalk will sync your files based on the revision that you choose to deploy. Deployments are published in several ways.

1. Automatically on each commit (if specified)
2. By going to a changeset and clicking deploy (all files in your repo from that revision are included)
3. By using the tags [deploy:development], [deploy:staging], or [deploy:production] in your commit message.

Getting started

To deploy your files, you first need to setup the FTP servers. You will see a new “Releases” tab in the repository where you can setup your deployment servers. The first step is to choose the type of server.

1. Development: Usually the place where it is okay to break things and have unstable versions.
2. Staging: The test server where you test new releases before it goes live.
3. Production: The live site. This should be the most stable version of your site or app.

For each server, you can setup either manual (requires your action) or automatic (changes are deployed on each commit). You will also set the source directory in your repository, which tells Beanstalk which files to deploy.

Deployment source

Next, you need to specify where the files will be deployed. You can insert an s/FTP server, the destination directory, and the username/password pair. Additionally, you can specify custom ports by clicking on “more options” below.

Deployment Destination

Tracking releases

Each deployment will create a set of release notes. These release notes will display what has changed since the last release to keep your team or clients in the loop. A special print style sheet was created for printing the release notes.

Known issues

This is definitely a beta, but it currently works well. There are some known usability and feature issues that we will fix soon.

1. It is not entirely clear that deploying a changeset will include all files from your specified source directory in the repo.
2. At the moment, you can deploy from a changeset that is not associated with the source directory. It will create release notes, but will only deploy from your specified source directory.
3. The current “retry time” is set to 30 minutes, so you will have to wait 30 minutes if it fails the first time.
4. Error handling needs to be improved on the deployment settings page.

Other than that, we welcome all of your feedback. Please give it a try and let us know what you think.