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/sh
git fetch --unshallow || true
git fetch origin "+refs/heads/*:refs/remotes/origin/*"
# checkout a remote branch with
# git checkout -b test origin/test
git remote add dokku dokku@yourdokkuinstance:projectname
git push dokku master
Now everytime you build on codeship, it should deploy to the dokku instance.
Ahoy @bibstha,
it would be great if you add this script via a PR to the https://github.com/codeship/scripts repository. I can prepare the script as well and mention you as the original author in the comments if you'd prefer this! ;)