Olá pessoal,

Hoje vamos demonstrar como é utilizado o Travis CI juntamento com Docker.

Travis CI é um serviço de integração continua na nuvem que pode ser integrado com repositórios do Github, ele é gratuito para repositórios públicos e pago para repositórios privados. Possui suporte as principais linguagens de programação como: C, PHP, Java, Perl, Ruby, Python, Go, C++, Erlang e etc…

O Travis trabalha da forma que a cada push que é dado para o Github:

  • Travis cria uma máquina virtual onde será excutado o código.
  • Pega o seu código do Github.
  • Faz o deploy da aplicação na máquina que ele criou anteriormente.
  • Executa os testes configurados pelo usuário.
  • Notificar o usuário sobre os processos ocorridos no Travis.

O ciclo de build completo do Travis possuindo 10 passos que podem ser executados, possuindo 3 dos passos como sendo opcional:

  1. Installapt addons (Você pode instalar diversos pacotes como gcc,time,make,etc..)
  2. before_install 
  3. install
  4. before_script
  5. script
  6. after_success or after_failure
  7. OPTIONAL before_deploy
  8. OPTIONAL deploy
  9. OPTIONAL after_deploy
  10. after_script

   Como você pode ver nos passos acima, existem diversas configurações que podem ser feitas dentro do arquivo .yml, o tornando um arquivo gigantesco de configuração, em nosso próximo post sobre DevOPS vamos nos deter a criar um ambiente real e dai sm usar muitas dessas opções.

   Mas como podemos utilizar isso com Docker então? Utilizamos o Travis na parte de criar nossas imagens, para que tenhamos um maior controle sobre nossos deploy e também para que nada de errado ocorra em nosso ambiente de produção. A cada modificação em nossa aplicação que é publicada no Github o Travis nos auxilia para a criação de uma nova imagem onde será executada a aplicação, mantendo a imagem sempre atualizada e também sempre nos notificando quando possui algum erro.

Exemplo do arquivo Travis.yml que é onde é feita a parte de configuração para cada aplicação.

#Diz que os comandos serão executados com sudo
sudo: required
#Qual a linguagem será utilizada
language: ruby

#Diz que o docker será utilzado para ser feito o deploy
services:
  - docker

#Irá rodar todos os comandos abaixo antes de fazer o build da aplicação
before_install:
- docker pull carlad/sinatra
- docker run -d -p 127.0.0.1:80:4567 carlad/sinatra /bin/sh -c "cd /root/sinatra; bundle exec foreman start;"
- docker ps -a
- docker run carlad/sinatra /bin/sh -c "cd /root/sinatra; bundle exec rake test"

#Executara o comando de criação do build
script:
- bundle exec rake test

Pessoal demonstrei aqui apenas um pouco de como podemos utilizar o Travis para a integração com Docker, no próximo post sobre DevOps irei fazer um tutorial mostrando como podemos utilizar Travis na pratica mesmo. Fique ligado em nossos posts e tire suas dúvidas.

Trabalha em uma Startup com foco em Plataforma como Serviço (PaaS), é especialista em Cloud Computing e Conteinerização, desenvolve todo dia uma nova maneira de resolver problemas e criar coisas novas.
  • Eduardo Moura

    Ok, muito bom. Obrigado.
    Você já criou esse outro artigo com “um ambiente real e dai sim usar muitas dessas opções.” ??
    Estamos precisando ter experiencia em subir um cenário com o Travis, fazendo deploy no Docker, aplicação Node,js. no back. E outro deploy para Node.js tbm com Angular, sendo o front.
    Tem uma indicação com conteúdo típico. Obrigado

  • Olá @edoura:disqus,

    Primeiramente gostaríamos de agradecer ao feedback.

    Nesse momento temos apenas parte do ambiente pronto, estamos ainda em fase de homologação. Assim que possível vamos criar um post referente a sua dúvida.
    Obrigado!

  • Eduardo Moura

    Obrigado @mundodocker:disqus. Obrigado pela contribuição.

  • juliano cesar ribeiro

    cristiano, ótimo post! poderia fazer um prático com jenkins? acho legal o travis, mas, nós, estamos trabalhando com jenkins no momento, e, não acho posts em português sobre integração continua e entrega continua usando: jenkins e docker.