Skip to content

Instantly share code, notes, and snippets.

@rothsa
Forked from rsanheim/ci.sh
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save rothsa/1e78e27dd2717efa6f98 to your computer and use it in GitHub Desktop.

Select an option

Save rothsa/1e78e27dd2717efa6f98 to your computer and use it in GitHub Desktop.
#!/bin/bash -x
# This should be your "script/ci" checked into version control, and then wired as your sole build step in Jenkins.
#
# Simplifying Assumptions:
#
# * You build all branches
# * You want to deploy all branches.
# * You wired up an SSH key to your CI server appropriately so it can talk to your deployment target(s) via Cap
set -e
script/test # or bundle exec rake, or whatever
echo "Beginning deploy from $GIT_BRANCH...."
# Do some git clean up and checkout and pull a branch
# Jenkins by default will be in a detached HEAD state, which Capistrano doesn't like
git remote prune origin
git fetch origin
git branch -t -f local/$GIT_BRANCH $GIT_BRANCH
git checkout local/$GIT_BRANCH
git pull
bundle exec cap deploy
# ...meanwhile, in your Capistrano config somewhere:
# configure your deployments to always go from the current branch
set(:current_branch) { `git branch`.match(/\* (\S+)\s/m)[1] || raise("Couldn't determine current branch") }
set :branch, defer { current_branch }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment