Skip to content

Instantly share code, notes, and snippets.

@aurelioluiz
Last active December 12, 2019 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aurelioluiz/eddaf2d7330aca408daef50271d2bec7 to your computer and use it in GitHub Desktop.
Save aurelioluiz/eddaf2d7330aca408daef50271d2bec7 to your computer and use it in GitHub Desktop.
Deploy automático com Dokku utilizando Wercker

Deploy automático com Dokku

Tutorial para configurar o deploy automático de uma aplicação Dokku utilizando Wercker

Requisitos

  • Servidor configurado e rodando aplicação Dokku
  • Conta no Wercker

1 - Wercker

  1. Vincule sua conta do GitHub
  2. Crie uma nova aplicação
  3. Selecione o repositório
  4. Selecione acesso através de chave SSH

2 - 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.

wercker-ssh-key

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

3 - Variáveis de ambiente

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>

4 - Arquivo de configuração

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

5 - Considerações

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment