Integrating codeship with fortrabbit

Ulrich Kautz
Linux preacher, short bios author.
@ukautz

We have got a lot of requests concerning continuous integration lately. That’s why we’ve published a new general article in our docs on how to integrate CI in your fortrabbit workflow.

Pieter from wercker also just published this great article on how to integrate fortrabbit with wercker. Here is another one from us on how you could something similar combining Codeship with fortrabbit.

Preparations

You should first create a fresh App on fortrabbit. You could also use an existing one, but it’s simpler to start from the scratch.

Now you have to setup a repository on Github or Bitbucket. Best name it the same as your App on fortrabbit… or however you can remember it best. I’d recommend to use a private repo, as long as you don’t plan on going public with your source code. I’ll go with Bitbucket in this example, ’cause they offer (a limited amount of) private repos for free.

Setup Codeship

Now you can sign in to codeship with your Bitbucket (or Github) account and create a new repo.

Create project

Following the create link you can choose your repository provider. I went with Bitbucket and chose my my-app repository.

Choose repo

In the next screen of the setup process codeship tells you how to set up your hook. Follow the instructions and make a first commit and push to your (Bitbucket) repo.

Setup hook

Now you need to choose the Technology, i.e. your test environment. Choose PHP in the top select bar. If you need (I didn’t) modify the setup and test commands.

Setup hook

Setup your fortrabbit App

You need to install your codeship project’s SSH key in your fortrabbit App so that codeship will be allowed to push to fortrabbit. You can find the key in the General tab of your project’s settings.

Get SSH key

Copy and paste the key as a new user in the Git tab of your App on fortrabbit.

Setup deployment: codeship -> fortrabbit

This is final step. Go again to your project settings on codeship and open the Deployment tab. Choose $script from the buttons and enter the following in the deployment command (modify according to your App’s Git URL and App name):

git remote | grep -q frbit-master || git remote add frbit-master git@git1.eu1.frbit.com:my-app.git
git push frbit-master master

It should look alike to (the textarea breaks the lines, but it should be two, not three):

Setup deployment

Commit, push, test and deploy

Well, you did it. Now just do you first code, test & deploy cycle. For this you need of course something testable. Here is a demo app you can use if you haven’t one at your fingertips.

Add your code, commit everything and push (to Bitbucket):

$ git add -A
$ git commit -am 'Test and deploy'
$ git push

On codeship, you should see something like this:

Test and deploy

And on fortrabbit, your code has been deployed!

Going multi stage

No problem. With codeship, you can setup a different deployment script for each branch. So assuming you followed our multi stage guide and read the extension about CI and multi-stage, just modify the deploy script on codeship for each branch like so (of course: replace the actual App Git URLs):

test branch

git remote | grep -q frbit-test || git remote add frbit-test git@git1.eu1.frbit.com:my-app-test.git
git push frbit-master refs/heads/test:refs/heads/master

stage branch

git remote | grep -q frbit-stage || git remote add frbit-stage git@git1.eu1.frbit.com:my-app-stage.git
git push frbit-master refs/heads/stage:refs/heads/master

prod branch

git remote | grep -q frbit-prod || git remote add frbit-prod git@git1.eu1.frbit.com:my-app-prod.git
git push frbit-master refs/heads/prod:refs/heads/master

Disclaimer: Of course wercker and Codeship are not the only “Continuous Integration as a Service” providers. You might also have a look at CircleCI, TravisCI or others. fortrabbit is definitely also not the only place to host your PHP application, but maybe the coolest. Don’t forget to check out our big list of developer facing services.