Wercker - Build e Deploy de maneira facil.

June 10, 2015
deployment golang docker wercker

O que é o Wercker?

Wercker é uma plataforma para facilitar as tarefas de build e deployment. A versão atual é utiliza o Docker para executar os builds, assim você pode usar o Wercker para fazer o build e deployment de qualquer linguagem basta utilizar uma imagem Docker e configurar os passos a serem executados pelo. Você pode customizar scripts para executar os passos tanto no build quanto no deployment assim evitando retrabalho quando precisar fazer o processo para outra aplicação que tenha a mesma estrutura. Não esqueça de compartilhar estes scripts com a comunidade, para isso você vai precisar criar um repositório separado contendo um arquivo run.sh e um arquivo wercker-step.yml, o wercker-step.yml é o arquivo de manifesto ele vai conter as informações sobre o passo que você esta criando, o run.sh vai conter os comandos que o seu passo vai executar, e claro não podemos esquecer de adicionar um bom README a este reposiório.

Agora vamos a um exemplo. Vou utilizar o a configuração que fiz para o build e deployment do blog no GitHub Pages. Abaixo esta o arquivo wercker.yml completo.

box: google/golang
build:
  steps:
    - setup-go-workspace
    - script:
        name: setup hugo
        code: go get github.com/spf13/hugo
    - script:
        name: build app
        code: |
              cd /pipeline/source
              hugo
deploy:
  steps:
    - lukevivier/gh-pages:
        token: $GIT_TOKEN
        domain: blog.ffrizzo.com
        basedir: ./public

Como ja falei anteriormente o Wercker tem o Docker como base então podemos utilizar qualquer image Docker neste caso estou utilizando a imagem google/golang esta esta definida em box: google/golang.

Os passos para executar o build e criar os arquivos para deployment estão descritos em build.

Os Passos

Segue um link para visualisar como os passos são executados no wercker https://app.wercker.com/#build/556e271f00bccd884301e4fa

O deployment

Agora que temos o nosso projeto configurado com um arquivo wercker.yml vamos fazer as configurações no ambiente do Wercker. Vamos criar uma nova aplicação alt text

No primeiro passo vamos selecionar se o nosso repositório esta no GitHub ou no BitBucket. alt text

O segundo passo qual o repositório que vamos utilizar. alt text

Terceiro passo é selecionar o Owner. alt text

Quarto passo selecionamos a forma como o wercker vai baixar o repositório. alt text

No quinto passo o wercker vai tentar identificar qual linguagem esta sendo utilizada no repositório e vai criar um arquivo wercker.yml inicial. alt text

O sexto e ultimo passo é para confirmar a criação da aplicação e decidir se você quer tornar esse repositório publico. alt text

No passo a seguir vamos configurar onde faremos o deployment. alt text

Vamos adicionar um novo deploy target do tipo Custom Deploy.

Vamos precisar adicionar uma variável com token para ser utilizado pelo deploy. (GitHub Help Token). Eu criei uma variável com o nome GIT_TOKEN e marquei ela como Protected assim ela não ficara visível.

E agora podemos alterar nosso código fazer pull para o repositório e deixar o Wercker fazer o resto do trabalho.

O Wercker também possui on cliente(OsX e Linux) que permitir baixarmos um container gerado por um build do wercker para rodar localmente com Docker. Isto é util quando precisamos descobrir porque nosso build não esta funcionando como deveria.

Para instalar o wercker no OsX.

curl https://s3.amazonaws.com/downloads.wercker.com/cli/stable/linux_amd64/wercker -o /usr/local/bin/wercker

No Linux

curl https://s3.amazonaws.com/downloads.wercker.com/cli/stable/linux_amd64/wercker -o /usr/local/bin/wercker

E por fim precisamos executar a seguinte linha tanto para OsX quanto para Linux.

chmod +x /usr/local/bin/wercker

Documentação http://devcenter.wercker.com/docs/index.html Documentação da API http://devcenter.wercker.com/api/index.html

Iniciando com Docker

January 2, 2016
docker devops

Rancher OS - Uma distribuição Linux para rodar containers Docker

July 18, 2015
so docker

Hugo - Gerando um site com conteúdo estático.

June 2, 2015
desenvolvimento golang
comments powered by Disqus