Fiz ontem uma palestra no DevOps & Tests Hack Nights sobre o assunto do título deste post. Essa palestra pode ser considerada uma continuação de um assunto que comecei lá atrás, sobre ALM e build com Docker (você pode ver o último post aqui).

A palestra que ministrei incluiu ainda um projeto ASP.NET Core, o que tornou tudo mais interessante.

Eu aproveitei a palestra pra fechar o ciclo. Eu já havia mostrado como criar um agente de build pro VSTS que conseguisse lidar com imagens e contêineres Docker, e agora eu mostrei tudo isso integrado no processo de build e release, usando VSTS.

Para entregar isso, eu tinha uma série de scripts usamos para gerenciar o Docker, mas fica complexo. Resolvi empacotar tudo em uma build task do VSTS, que foi para produção ontem, horas antes da palestra. Está em preview, algumas coisas precisam ser arredondadas, mas ela está funcionando. Você pode usar no seu projeto de VSTS navegando até o site da extensão no marketplace do VSTS, e instalando no VSTS. O código fonte é todo livre, e está no Github da Lambda3.

Não vou entrar em detalhes, até porque já temos o vídeo. Farei isso depois. Por enquanto, posso apresentar alguns screenshots, que já deixam claro como tudo funciona.

Pra compilar um Dockerfile, crie uma build e adicione uma task de Docker que vem com a extensão acima (clique para ampliar a imagem):

Task do Docker

Para empurrar pro Docker Hub:

Task de push

Veja o build log da task de Docker build, você consegue ver o build do Docker acontecendo:

Log do Build

E aqui o da de Docker push:

Log do Push

Ao final, você terá artefatos que serão usados para a release:

Artefatos da Build mostrando uma pasta docker e o arquivo de compose e outro com a versão compilada.

Então você cria uma release, adiciona um environment, e coloca outra build task do Docker:

Release configurada com 2 environment e a task Docker

Note a variável para a chave do SSH, ela é configurada de forma secreta em “Variables”:

Variável SSH_KEY secreta

Aqui o log da Release:

Log da release mostrando o resultado do docker-compose

Note que a release pra homologação funcionou, o docker-compose rodou com sucesso, publicando no Azure Container Services, inicialmente estabelecendo uma conexão segura via SSH. E em seguida ficou pendente a aprovação para o ambiente de produção, que, provavelmente, rodaria em outra estrutura de Azure Container Services.

Já deu pra ter uma ideia, né? O repositório do Github e o site da extensão dão mais detalhes da configuração.

Você pode assistir ao vídeo no ponto em que eu começo falar abaixo:

E há mais palestras legais, aproveite pra ver o restante também. 😉

Os slides estão no SlideShare:

E aí, o que você acha? Ficou fácil, né? Vamos trabalhar com Docker?

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.