Tutorial para configurar o deploy automático de uma aplicação Dokku utilizando Wercker
- Servidor configurado e rodando aplicação Dokku
- Conta no Wercker
- Vincule sua conta do GitHub
- Crie uma nova aplicação
- Selecione o repositório
- Selecione acesso através de chave SSH
Após a aplicação criada acesse a aba Environment, clique no link + Generate SSH Keys, informe o SSH key name DOKKU e clique em Generate. Este processo irá criar duas variáveis de ambiente DOKKU_PUBLIC e DOKKU_PRIVATE.
Acesse o servidor para adicionar a chave pública gerada.
# crie um arquivo .pub com o conteúdo de DOKKU_PUBLIC
nano wercker.pub
# adicione a chave pública ao usuário dokku
# sshcommand acl-add <USER> <NAME> <KEY_FILE>
sudo sshcommand acl-add dokku wercker wercker.pub
# remova o arquivo
rm wercker.pub
Crie duas novas variáveis de ambiente.
# IP / dominío do servidor Dokku
SERVER_HOSTNAME = <server-ip>
# Porta do servidor Dokku
PORT = <server-port>
# Nome da aplicação Dokku
APP_NAME = <app-name>
# Branch do repositório
BRANCH = <branch>
Crie um novo arquivo na raiz do repositório wercker.yml
box: ubuntu
build:
steps:
- install-packages:
packages: openssh-client git
- add-to-known_hosts:
hostname: $SERVER_HOSTNAME
port: $PORT
- add-ssh-key:
keyname: DOKKU
- script:
name: add remote repository
code: |
git remote add dokku ssh://dokku@$SERVER_HOSTNAME:$PORT/$APP_NAME
- script:
name: push to server
code: |
git checkout $BRANCH && git push -f dokku $BRANCH:master
Isso é tudo! Por padrão o Wercker configura um Webhook no repositório do GitHub que irá executar após dois eventos, porém é possível alterar editando o Webhook.
- Pull request
- Push
O arquivo de configuração do Wercker basicamente:
- Cria uma instância ubuntu com os arquivos do repositório
- Instala dois pacotes (openssh-client e git)
- Conecta via SSH no servidor remoto
- Adiciona o repositório remoto do Dokku
- Executa o push