Devsuperior CI/CD
Devsuperior CI/CD
Devsuperior CI/CD
br
Conteúdo Bônus
Estudo de caso CI/CD AWS e Github Actions de projeto Spring Boot
Objetivo
Apresentar um estudo de caso, passo a passo, para montar uma esteira de CI/CD com AWS e
Github Actions, para um projeto Spring Boot.
Disclaimer 1:
O suporte a este conteúdo é limitado exclusivamente à reprodução do passo a passo contido
nas aulas. O suporte não inclui outros procedimentos e ferramentas, nem consultoria ou coisa
do tipo sobre qualquer assunto.
Disclaimer 2:
Tome MUITO cuidado em exterminar os recursos criados, depois de você finalizar as aulas. A
responsabilidade por cobranças a recursos consumidos na AWS do aluno é de
responsabilidade exclusiva do aluno. Uma alternativa viável neste momento é apenas assistir
ao conteúdo para conhecimento.
https://devsuperior.com.br
Se na tela seguinte te perguntar o motivo da criação da chave, pode escolher a opção “Outros”.
O que é CI/CD?
https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd
https://devsuperior.com.br
on:
push:
branches:
- 'main'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Printing Hello World
run: echo "Hello World!"
Cloud Shell
Evita o “Funciona na minha máquina”
https://console.aws.amazon.com/cloudshell/home
ETAPA 2: REDE
Identificador Único: UNIQ
Permite executar esses comandos várias vezes na mesma conta sem conflitar os nomes dos
recursos, basta mudar o UNIQ
export ENV_NAME="pocdscatalog"
export AWS_REGION="us-east-2"
export UNIQ="dsc${ENV_NAME}$(date +'%Y%m%d')"
--cidr-block $CIDR_B \
--availability-zone $AZ_B \
--query "Subnet.SubnetId" \
--output text)
RDS Networking
export RDS_SECG=$(aws ec2 create-security-group \
--group-name dscatalog-rds-secgrp \
--description "dscatalog-rds-secg" \
--vpc-id $VPC_ID \
--query "GroupId" \
https://devsuperior.com.br
--output text)
RDS Instance
export RDS_ID=$(aws rds create-db-instance \
--db-name $RDS_DB \
--db-instance-identifier $RDS_NAME \
--allocated-storage $RDS_STORAGE \
--db-instance-class $RDS_INSTANCE \
--engine $RDS_ENGINE \
--engine-version $RDS_ENGINE_VERSION \
--master-username $RDS_ROOT_USER \
--master-user-password $RDS_ROOT_PASSWORD \
--db-subnet-group-name $RDS_NETGRP \
--backup-retention-period 0 \
--publicly-accessible \
--vpc-security-group-ids $RDS_SECG \
--query "DBInstance.DBInstanceIdentifier" \
--output text)
export RDS_JDBC=jdbc:postgresql://$RDS_ENDPOINT:$RDS_PORT/$RDS_DB
Variáveis salvas
export EB_APP=${UNIQ}ebapp
export EB_ENV=${UNIQ}ebenv
export EB_BUCKET=${UNIQ}versions
export EB_PROFILE=${UNIQ}insprofile
export EB_INSTANCE_TYPES=t2.micro
export EB_SPOT=false
export EB_TEMPLATE=${UNIQ}cfg
wget https://raw.githubusercontent.com/devsuperior/dscatalog-
resources/master/aws/eb-ip-trust.json
export EB_ROLE=${UNIQ}ebrole
export EB_POLICYNAME=${UNIQ}policy
Criar bucket S3
aws s3 mb s3://$EB_BUCKET
* Subir o bundle (jar) para local público na nuvem (Github, S3, etc.)
export BUNDLE_NAME=dscatalog-0.0.1-SNAPSHOT.jar
echo export BUNDLE_NAME=$BUNDLE_NAME | tee -a envrc
aws s3 ls s3://$EB_BUCKET/$EB_VERSION_KEY
rm options.txt
envsubst < options.txt.env > options.txt
cat options.txt
Criar ambiente
export EB_CNAME="${UNIQ}ebcname$(date +'%Y%m%d%H%M')"
aws s3 rb "s3://$EB_BUCKET"
ATENÇÃO: o comando acima deleta a base de dados, o que DEMORA ALGUNS MINUTOS.
Acompanhe no dashboard do RDS o processo, para depois continuar com os comandos abaixo.