After migrating from heroku to dokku, we had to also chance codeship so we deploy to dokku. I followed the following steps to successfully deploy to dokku.
- Save the public key of the codeship project. It is found in Project Settings > General Settings.
- Copy the public key to a file /tmp/codeship_projectname.pub.
- Make sure when pasting, all the contents are in a single line and not multiple lines.
- Add the public key to dokku using the following command in console. Reference.
cat /tmp/codeship_projectname.pub | ssh root@yourdokkuinstance "sudo sshcommand acl-add dokku [description]"
Where [description] is a single word used to identify the key. I use codeship_projectname for [description]
- In codeship, go to Project Settings > Deployment. Delete heroku. Add a new custom script. Add the following lines to custom script. The git tree needs to be unshallowed first. Reference.
#!/bin/bash
DOKKU_DOMAIN=
DOKKU_APP=
set -e
git fetch --unshallow || true
git push dokku@${DOKKU_DOMAIN}:${DOKKU_APP} ${CI_BRANCH}:master
Now everytime you build on codeship, it should deploy to the dokku instance.