How to deploy your code

If you use a source code repository like Git or Subversion and have to push code manually you're missing out. There are deployment tools that can save you a lot of time. You can also set up automatic deployment so that every time you push a commit to your repository the change gets automatically deployed to your server.

This is extremely helpful when you're working locally. Create a deployment to watch your dev branch and every time you push a commit it will be automatically pushed to your staging site.

Does your production site run on more than one server? Setup a deployment that pushes to them both at the same time.

Do you have a more complicated deployment process that requires running a database migration or other custom script? A deployment can handle that for you automatically.

There are a couple services that can help make deployments easier, Beanstalk and DeployHQ.

Comparing Beanstalk and DeployHQ

Beanstalk has a much cleaner interface and more deployment options than DeployHQ. It also provides hosting for your repositories, which DeployHQ does not. However, it can only deploy its own repositories. For example, you can’t deploy a GitHub repository.

DeployHQ is focused only on deployment. It doesn’t provide repository hosting. I find the interface to be clunkier than Beanstalk. But, it can deploy repositories that are hosted just about anywhere.

We used Beanstalk for a long time, but recently switched to GitHub for repository hosting and DeployHQ for deployment. We’ve found that what DeployHQ lacks in ease of use, GitHub more than makes up for in its social coding features (pull requests, comments, etc). But really, both services offer adequate solutions.

Configuring Deployments with Beanstalk

Beanstalk Deployment

Beanstalk's deployment overview

To set up a deployment on Beanstalk:

  1. Go to the Deployments tab for your repository
  2. Click Add Environment
  3. Configure a development, staging or production environment by giving it the proper name and selecting the correct branch.
  4. Set the Deployment Mode to Automatic for development or staging environments or Manual for production environments.
  5. Add one or more servers by selecting your destination (e.g. FTP, SFTP, Heroku, Amazon S3, etc) and then providing the proper credentials.

Read Beanstalk’s Deployment Best Practices guide and knowledge base article for more details.

Beanstalk Deployment Options

Beanstalk's deployment options

Configuring Deployments with DeployHQ + GitHub

To setup DeployHQ to deploy a GitHub repository:

  1. Create a new project in DeployHQ
  2. Select the GitHub repository tab
  3. Enter your GitHub username and password
  4. Select the GitHub repository you want to deploy
  5. Add server information like FTP/SFTP, environment, branch, path, username and password and save your settings

DeployHQ's deploy hook URL

If you want to setup auto deployment:

  1. Go to Settings > Servers and Groups for your project and click the server you just setup
  2. Copy the Deploy Hook URL from the sidebar
  3. In GitHub, go to your repository and click Settings > Service Hooks > Webhook URLs
  4. Paste the Deploy Hook URL into the URL field and Update Settings

Read DeployHQ’s article on Using Automatic Deployments for more details.

Posted March 12, 2013 by Jason Siffring

Jason has over 15 years of web development experience and is the owner of Surprise Highway. Follow him on Twitter or Google+.

What to do when business is slow
← Previous
Dealing with six degrees of client separation
© 2022 Surprise Highway Inc.