SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
https://www.google.com/url?
sa=i&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWebAssembly&psig=AOvVaw01ph2uPKCm79kmbF
AW&ust=1594860562007000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCOCK-
dyEzuoCFQAAAAAdAAAAABAD
Ambiente de CI/CD
com Google Cloud
Alvaro Viebrantz
Google Developer Expert for IoT and Product Engineer at Leverege
aviebrantz.com
@alvaroviebrantz
MOTIVAÇÃO DESSA TALK
“COMO CONFIGURAR DEPLOY
POR GIT IGUAL NO HEROKU ?”
ATENÇÃO
DÁ PRA FAZER TUDO
EM QUALQUER CLOUD
O que vamos ver hoje ?
Por que
CI/CD ?
Ferramentas
no GCP
Demos
Por que CI/CD ?
Por que CI/CD ?
Vamos automatizar tudo
• Garantir entrega de software de forma continua
• Com qualidade
• Automatizar suite de testes
• Analises estáticas de código
• Evitar erros humanos e muitas ações manuais
• Rotinas para verificar pacotes/dependencias
• Segurança
Por que CI/CD ?
Publicação automatizada
• Deploy em diferentes ambientes
• Criar ambiente de teste
• Publicar em ambiente Dev/QA/Prod
• Publicar bibliotecas
• Bibliotecas privadas da empresa
• Maven, pip, NPM, etc
• Gerar arquivos/assets em geral
• Teremos um exemplo disso no final em IoT
Ferramentas
no Google Cloud
O que precisamos para entregar de forma continua
Em geral é o que precisamos em todo projeto de CI/CD
• Controle de versão 📖
• Ferramenta de build 🛠
• Ferramenta para rodar testes ✅
• Alertas para o time 🚨
• Ferramenta de publicação 🚀
• Onde publicar ☁
Cloud Source Repositories
Controle de versão 📖
• Repositório Git privado e ilimitado
• Sincroniza com Github e Bitbucket ⭐
• Associar erros nos logs com código
• Não recomendo como ferramenta de versionamento principal
• Outras ferramentas resolvem melhor o problema
• Mas ajuda muito para acessar o código de dentro do GCP
• Não precisa de credenciais com o serviço externo pra isso
por ex.
• Tem triggers quando código é modificado.
Cloud Build
Ferramenta de CI ✅
• A principal ferramenta que vamos falar hoje
• Utiliza Docker para rodar os comandos, então dá pra
suportar muitos ambientes/linguagens/etc
• Alertas de sucesso/erro no build 🚨
• Via PubSub ou HTTP
• Free Tier pra sempre bem bacana
• 120 minutos de build por dia
Cloud Build
Ferramenta de CI ✅
• Pode ser integrado com serviços no Google para rodar
sua aplicação
• App Engine, Kubernetes, Cloud Functions
• Firebase
• Publicar Apps
• Virtualmente qualquer coisa
• Também pode ser usado para publicar arquivos/
bibliotecas/imagens docker.
• Vamos ver um caso de uso até em IoT mais a frente.
Cloud Container Registry
Armazenamento de Imagens Docker 🐳
• Repositório de imagens Docker privado.
• Onde vamos armazenar nossa aplicação
• Faz scan de segurança nas imagens 🚨
• Vai virar o Artifact Registry em breve em beta
• Docker, maven, npm, pip, etc
• 5GB gratis de armazenamento 🥰
Google Container Registry
Imagens docker armazenadas
Como funciona
o Cloud Build
Triggers no Cloud Build
Como ativar seu fluxo de CI/CD
• Push em uma branch
• Filtro por regex
• Push de uma nova tag
• Filtro por regex
• Pull Request
• Integração com o Github
• Sim, a gama não é muito grande, mas dá pro gasto
• Vamos usar o Github Actions para complementar
Formato de build no Cloud Build
Como executar seus passos
• Por Dockerfile
• Só faz o build da imagem e salva no Container Registry
• Por arquivo cloudbuild.yaml
• Mais interessante e permite construir seus próprios passos
• Cada passo roda em um container Docker
• Mas os dados ficam salvos em um ambiente comum
Exemplos com cloudbuild.yaml
Alguns containers são disponibilizados pelo Google
Exemplos com cloudbuild.yaml
Containers no Docker Hub funcionam
Exemplos com cloudbuild.yaml
Podem ser parametrizado
Variáveis no Cloud Build
Algumas variáveis estão disponíveis
quando alguma trigger é ativada
https://cloud.google.com/cloud-build/
docs/configuring-builds/substitute-
variable-values
“Ah mas no Heroku não
precisava de tudo isso”
CNCF Buildpacks !!!
Algumas receitas já prontas de como
empacotar algumas aplicações.
O Google Cloud Buildpacks integra
isso no Cloud Build
https://github.com/GoogleCloudPlatform/
buildpacks
Revendo nosso Fluxo de CI/CD
Com ferramentas do Google Cloud
Onde publicar ?
27
IaaS
Infrastructure as a Service
CaaS
Container/Cluster as a
Service
PaaS
Platform as a Service
FaaS/Serverless
Function as a Service
ProvedorVocê
28
Google Cloud Run
Serverless + Containers
• Facilidade de uso do serverless
• Flexibilidade dos Containers
• Acesso via HTTP e gRPC
• Pode rodar de varias formas
• Ambiente todo gerenciado - Cloud Run Managed
• Seu próprio Cluster Kubernetes
• Cloud Run for GKE
Subir o container no Cloud Run
Deploy fácil e com escalabilidade automatica
Publicando no Cloud Run com Cloud Build
Tem um step pronto pra isso
DEMO #1
“QUERO FAZER IGUAL NO HEROKU”
32
GitOps com Cloud Run
Vamos publicar uma aplicação Python no Cloud Run
main.py requirements.txt Dockerfile
33
GitOps com Cloud Run
Quase igual instalar programa no
Windows. Next > Next > Finish
34
GitOps com Cloud Run
35
GitOps com Cloud Run
Quase igual instalar programa no Windows. Next > Next > Finish
DEMO #2
FLUXO MAIS
COMPLETO DE CI/CD
37
Fluxo de CI
Criando ambiente temporários para validação
• Várias Triggers e cloudbuild.yaml diferentes para cada caso
• Uso de variáveis de ambiente
38
Fluxo de CI
Ao publicar na branch development
• Publica no ambiente de dev
39
Fluxo de CI
Ao criar uma release/tag
• Publica no ambiente de produção
40
Fluxo de CI
Desenvolvedor cria um Pull Request
• Cria/Deploy um serviço no Cloud Run
41
Fluxo de CI
Fecha Pull Request - ( Via Github Actions )
• Deleta o Serviço criado para o Pull Request
O time do Google fez vários
plugins pro Github Actions
github.com/GoogleCloudPlatform/github-actions
DEMO #3
MEU SITE PESSOAL
43
Fluxo de CI
Dessa vez utilizei apenas o Github Actions
• Deploy no Firebase Hosting
Caso de Uso em IoT
45
CI/CD e Over the Air Updates com Google Cloud
Aplicando as mesmas tecnologias apresentadas aqui
46
Fluxo de CI
Gerando imagem a ser enviada ao device IoT
• Projeto usa PlatformIO
• Tem suporte a build de projetos de IoT de forma facilitada
• Imagem Docker com PlatformIO instalado
• Compila o projeto e salva os binários
• Binários são salvos no Google Cloud Storage
• Criação dos binários ativa uma Cloud Functions
• Salva dados de nova versão no BigQuery
• Uma Cloud Function HTTP é disponibilizada para dispositivo checar
versão e fazer download da imagem.
47
Configuração no Cloud Build
Arquivos ficam salvos no workspace e podem ser salvos no Google Cloud Storage
Projetos mostrados aqui
Codigo e Artigos
• Demo em Flask
• https://github.com/alvarowolfx/flask-demo
• Demo de Múltiplos Ambientes
• https://github.com/alvarowolfx/gcloud-ci-cd-demo
• Use Case em IoT
• https://medium.com/google-cloud/serverless-continuous-integration-and-ota-update-flow-using-
google-cloud-build-and-arduino-d5e1cda504bf
• https://github.com/alvarowolfx/gcloud-ota-arduino-update
O que mais dá pra fazer ?
Outros Artigos
• Deploy de aplicativos móveis
• Android APK
• https://cloud.google.com/community/tutorials/building-android-apk-with-cloud-build-gradle-
docker-image
• Flutter e Cloud Build
• https://medium.com/@lidemin/flutter-ci-cd-with-cloud-build-android-9cd12ade8306
• Outros ambientes de execução
• Google App Engine
• https://medium.com/google-cloud/continuous-delivery-in-google-cloud-platform-cloud-build-
with-app-engine-8355d3a11ff5
• Cloud Functions
• https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-functions
REFERENCIAS
Referencias
Mais material de estudo
• https://medium.com/swlh/how-to-ci-cd-on-google-cloud-platform-1e631cded335
• https://cloud.google.com/devops
• https://github.com/GoogleCloudPlatform/github-actions/blob/master/get-secretmanager-secrets/
README.md
• https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-
actions#github-context
• https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values#yaml_2
• https://cloud.google.com/cloud-build/docs/building/build-go#building_using_go_modules
• Cloud Run Quickstart - https://www.youtube.com/watch?v=3OP-q55hOUI
• https://fireship.io/lessons/ci-cd-with-google-cloud-build/
Obrigado!
aviebrantz.com
youtube.com/alvaroviebrantz
twitch.tv/alvaroviebrantz
Alvaro Viebrantz
Google Developer Expert for IoT and Product Engineer at Leverege
aviebrantz.com
@alvaroviebrantz

Mais conteúdo relacionado

Mais procurados

The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!Baharika Sopori
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js ExpressEyal Vardi
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Jemin Huh
 
Web Applications and Deployment
Web Applications and DeploymentWeb Applications and Deployment
Web Applications and DeploymentBG Java EE Course
 
Getting started with Next.js
Getting started with Next.jsGetting started with Next.js
Getting started with Next.jsGökhan Sarı
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an IntroductionSanjeev Sharma
 
What Is Express JS?
What Is Express JS?What Is Express JS?
What Is Express JS?Simplilearn
 
Asp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework CoreAsp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework Coremohamed elshafey
 
Avoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAvoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAnkit Agarwal
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKJosé Paumard
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentDevathon
 

Mais procurados (20)

The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js Express
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Introduction Node.js
Introduction Node.jsIntroduction Node.js
Introduction Node.js
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 
What is Swagger?
What is Swagger?What is Swagger?
What is Swagger?
 
Web Applications and Deployment
Web Applications and DeploymentWeb Applications and Deployment
Web Applications and Deployment
 
Getting started with Next.js
Getting started with Next.jsGetting started with Next.js
Getting started with Next.js
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an Introduction
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
What Is Express JS?
What Is Express JS?What Is Express JS?
What Is Express JS?
 
React introduction
React introductionReact introduction
React introduction
 
Asp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework CoreAsp.Net Core MVC , Razor page , Entity Framework Core
Asp.Net Core MVC , Razor page , Entity Framework Core
 
Avoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAvoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promises
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App Development
 

Semelhante a CI/CD no GCP

Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!Ryan Padilha
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Renato Groff
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaRenato Groff
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Renato Groff
 
Monitoramento de containers Docker
Monitoramento de containers DockerMonitoramento de containers Docker
Monitoramento de containers DockerJosé Barbosa
 
Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)WSO2
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTGDGFoz
 
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Alvaro Viebrantz
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Renato Groff
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasJose Papo, MSc
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasAmazon Web Services LATAM
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesRodrigo Cândido da Silva
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...Amazon Web Services
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Renato Groff
 

Semelhante a CI/CD no GCP (20)

Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Monitoramento de containers Docker
Monitoramento de containers DockerMonitoramento de containers Docker
Monitoramento de containers Docker
 
Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)Publicando WSO2 API Manager no Kubernetes (Portuguese)
Publicando WSO2 API Manager no Kubernetes (Portuguese)
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoT
 
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e Arquiteturas
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
 

Mais de Alvaro Viebrantz

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfAlvaro Viebrantz
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathonsAlvaro Viebrantz
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and GoAlvaro Viebrantz
 
TinyML - IoT e Machine Learning
TinyML -  IoT e Machine LearningTinyML -  IoT e Machine Learning
TinyML - IoT e Machine LearningAlvaro Viebrantz
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?Alvaro Viebrantz
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus DadosAlvaro Viebrantz
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google CloudAlvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudAlvaro Viebrantz
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudAlvaro Viebrantz
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloAlvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTAlvaro Viebrantz
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoAlvaro Viebrantz
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudAlvaro Viebrantz
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseAlvaro Viebrantz
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Alvaro Viebrantz
 

Mais de Alvaro Viebrantz (20)

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdf
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathons
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and Go
 
TinyML - IoT e Machine Learning
TinyML -  IoT e Machine LearningTinyML -  IoT e Machine Learning
TinyML - IoT e Machine Learning
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google Cloud
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google Cloud
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google Cloud
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoT
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente Embarcado
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google Cloud
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e Firebase
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
 

CI/CD no GCP

  • 3. “COMO CONFIGURAR DEPLOY POR GIT IGUAL NO HEROKU ?”
  • 4. ATENÇÃO DÁ PRA FAZER TUDO EM QUALQUER CLOUD
  • 5. O que vamos ver hoje ? Por que CI/CD ? Ferramentas no GCP Demos
  • 7. Por que CI/CD ? Vamos automatizar tudo • Garantir entrega de software de forma continua • Com qualidade • Automatizar suite de testes • Analises estáticas de código • Evitar erros humanos e muitas ações manuais • Rotinas para verificar pacotes/dependencias • Segurança
  • 8. Por que CI/CD ? Publicação automatizada • Deploy em diferentes ambientes • Criar ambiente de teste • Publicar em ambiente Dev/QA/Prod • Publicar bibliotecas • Bibliotecas privadas da empresa • Maven, pip, NPM, etc • Gerar arquivos/assets em geral • Teremos um exemplo disso no final em IoT
  • 10. O que precisamos para entregar de forma continua Em geral é o que precisamos em todo projeto de CI/CD • Controle de versão 📖 • Ferramenta de build 🛠 • Ferramenta para rodar testes ✅ • Alertas para o time 🚨 • Ferramenta de publicação 🚀 • Onde publicar ☁
  • 11. Cloud Source Repositories Controle de versão 📖 • Repositório Git privado e ilimitado • Sincroniza com Github e Bitbucket ⭐ • Associar erros nos logs com código • Não recomendo como ferramenta de versionamento principal • Outras ferramentas resolvem melhor o problema • Mas ajuda muito para acessar o código de dentro do GCP • Não precisa de credenciais com o serviço externo pra isso por ex. • Tem triggers quando código é modificado.
  • 12. Cloud Build Ferramenta de CI ✅ • A principal ferramenta que vamos falar hoje • Utiliza Docker para rodar os comandos, então dá pra suportar muitos ambientes/linguagens/etc • Alertas de sucesso/erro no build 🚨 • Via PubSub ou HTTP • Free Tier pra sempre bem bacana • 120 minutos de build por dia
  • 13. Cloud Build Ferramenta de CI ✅ • Pode ser integrado com serviços no Google para rodar sua aplicação • App Engine, Kubernetes, Cloud Functions • Firebase • Publicar Apps • Virtualmente qualquer coisa • Também pode ser usado para publicar arquivos/ bibliotecas/imagens docker. • Vamos ver um caso de uso até em IoT mais a frente.
  • 14. Cloud Container Registry Armazenamento de Imagens Docker 🐳 • Repositório de imagens Docker privado. • Onde vamos armazenar nossa aplicação • Faz scan de segurança nas imagens 🚨 • Vai virar o Artifact Registry em breve em beta • Docker, maven, npm, pip, etc • 5GB gratis de armazenamento 🥰
  • 15. Google Container Registry Imagens docker armazenadas
  • 17. Triggers no Cloud Build Como ativar seu fluxo de CI/CD • Push em uma branch • Filtro por regex • Push de uma nova tag • Filtro por regex • Pull Request • Integração com o Github • Sim, a gama não é muito grande, mas dá pro gasto • Vamos usar o Github Actions para complementar
  • 18. Formato de build no Cloud Build Como executar seus passos • Por Dockerfile • Só faz o build da imagem e salva no Container Registry • Por arquivo cloudbuild.yaml • Mais interessante e permite construir seus próprios passos • Cada passo roda em um container Docker • Mas os dados ficam salvos em um ambiente comum
  • 19. Exemplos com cloudbuild.yaml Alguns containers são disponibilizados pelo Google
  • 20. Exemplos com cloudbuild.yaml Containers no Docker Hub funcionam
  • 22. Variáveis no Cloud Build Algumas variáveis estão disponíveis quando alguma trigger é ativada https://cloud.google.com/cloud-build/ docs/configuring-builds/substitute- variable-values
  • 23. “Ah mas no Heroku não precisava de tudo isso”
  • 24. CNCF Buildpacks !!! Algumas receitas já prontas de como empacotar algumas aplicações. O Google Cloud Buildpacks integra isso no Cloud Build https://github.com/GoogleCloudPlatform/ buildpacks
  • 25. Revendo nosso Fluxo de CI/CD Com ferramentas do Google Cloud
  • 27. 27 IaaS Infrastructure as a Service CaaS Container/Cluster as a Service PaaS Platform as a Service FaaS/Serverless Function as a Service ProvedorVocê
  • 28. 28 Google Cloud Run Serverless + Containers • Facilidade de uso do serverless • Flexibilidade dos Containers • Acesso via HTTP e gRPC • Pode rodar de varias formas • Ambiente todo gerenciado - Cloud Run Managed • Seu próprio Cluster Kubernetes • Cloud Run for GKE
  • 29. Subir o container no Cloud Run Deploy fácil e com escalabilidade automatica
  • 30. Publicando no Cloud Run com Cloud Build Tem um step pronto pra isso
  • 31. DEMO #1 “QUERO FAZER IGUAL NO HEROKU”
  • 32. 32 GitOps com Cloud Run Vamos publicar uma aplicação Python no Cloud Run main.py requirements.txt Dockerfile
  • 33. 33 GitOps com Cloud Run Quase igual instalar programa no Windows. Next > Next > Finish
  • 35. 35 GitOps com Cloud Run Quase igual instalar programa no Windows. Next > Next > Finish
  • 37. 37 Fluxo de CI Criando ambiente temporários para validação • Várias Triggers e cloudbuild.yaml diferentes para cada caso • Uso de variáveis de ambiente
  • 38. 38 Fluxo de CI Ao publicar na branch development • Publica no ambiente de dev
  • 39. 39 Fluxo de CI Ao criar uma release/tag • Publica no ambiente de produção
  • 40. 40 Fluxo de CI Desenvolvedor cria um Pull Request • Cria/Deploy um serviço no Cloud Run
  • 41. 41 Fluxo de CI Fecha Pull Request - ( Via Github Actions ) • Deleta o Serviço criado para o Pull Request O time do Google fez vários plugins pro Github Actions github.com/GoogleCloudPlatform/github-actions
  • 42. DEMO #3 MEU SITE PESSOAL
  • 43. 43 Fluxo de CI Dessa vez utilizei apenas o Github Actions • Deploy no Firebase Hosting
  • 44. Caso de Uso em IoT
  • 45. 45 CI/CD e Over the Air Updates com Google Cloud Aplicando as mesmas tecnologias apresentadas aqui
  • 46. 46 Fluxo de CI Gerando imagem a ser enviada ao device IoT • Projeto usa PlatformIO • Tem suporte a build de projetos de IoT de forma facilitada • Imagem Docker com PlatformIO instalado • Compila o projeto e salva os binários • Binários são salvos no Google Cloud Storage • Criação dos binários ativa uma Cloud Functions • Salva dados de nova versão no BigQuery • Uma Cloud Function HTTP é disponibilizada para dispositivo checar versão e fazer download da imagem.
  • 47. 47 Configuração no Cloud Build Arquivos ficam salvos no workspace e podem ser salvos no Google Cloud Storage
  • 48. Projetos mostrados aqui Codigo e Artigos • Demo em Flask • https://github.com/alvarowolfx/flask-demo • Demo de Múltiplos Ambientes • https://github.com/alvarowolfx/gcloud-ci-cd-demo • Use Case em IoT • https://medium.com/google-cloud/serverless-continuous-integration-and-ota-update-flow-using- google-cloud-build-and-arduino-d5e1cda504bf • https://github.com/alvarowolfx/gcloud-ota-arduino-update
  • 49. O que mais dá pra fazer ? Outros Artigos • Deploy de aplicativos móveis • Android APK • https://cloud.google.com/community/tutorials/building-android-apk-with-cloud-build-gradle- docker-image • Flutter e Cloud Build • https://medium.com/@lidemin/flutter-ci-cd-with-cloud-build-android-9cd12ade8306 • Outros ambientes de execução • Google App Engine • https://medium.com/google-cloud/continuous-delivery-in-google-cloud-platform-cloud-build- with-app-engine-8355d3a11ff5 • Cloud Functions • https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-functions
  • 51. Referencias Mais material de estudo • https://medium.com/swlh/how-to-ci-cd-on-google-cloud-platform-1e631cded335 • https://cloud.google.com/devops • https://github.com/GoogleCloudPlatform/github-actions/blob/master/get-secretmanager-secrets/ README.md • https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github- actions#github-context • https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values#yaml_2 • https://cloud.google.com/cloud-build/docs/building/build-go#building_using_go_modules • Cloud Run Quickstart - https://www.youtube.com/watch?v=3OP-q55hOUI • https://fireship.io/lessons/ci-cd-with-google-cloud-build/
  • 52. Obrigado! aviebrantz.com youtube.com/alvaroviebrantz twitch.tv/alvaroviebrantz Alvaro Viebrantz Google Developer Expert for IoT and Product Engineer at Leverege aviebrantz.com @alvaroviebrantz