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

DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
Simplilearn
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Simplilearn
 
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
Simplilearn
 

Mais procurados (20)

Microservices and SOA
Microservices and SOAMicroservices and SOA
Microservices and SOA
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
 
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...
Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...
Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviços
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOps
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web Programlama
 
Cbs Google Cloud Platform fundamentals 2
Cbs Google Cloud Platform fundamentals 2Cbs Google Cloud Platform fundamentals 2
Cbs Google Cloud Platform fundamentals 2
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new FeaturesMigrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
 
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
 
Gitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCD
 

Semelhante a Ambiente de CI/CD com Google Cloud

Semelhante a Ambiente de CI/CD com Google Cloud (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

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

Último

Último (9)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Ambiente de CI/CD com Google Cloud

  • 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