Bruno Santos
3 min readJun 28, 2021

Vamos de Github Actions?

Existem inúmeras ferramentas para automatizar a integração e entrega de aplicações, dentre elas: bitbucket pipelines, goCD, gitlab, circleCI e etc. Há alguns anos eu tive a oportunidade de trabalhar com o bitbucket pipelines e curtia muito, atendia muito bem as nossas necessidades, e em novembro/19 mais uma ferramenta entra no mercado, github actions.

Como o github é a maior e mais conhecida plataforma de repositório e controle de versões de códigos, logo pensei: — que legal, se CI/CD no github actions for interessante, seguramente será a principal plataforma de CI/CD para muitos profissionais.

Recentemente fiz uma PoC para entender o básico do github actions e a ideia do artigo é justamente mostrar os passos para essa PoC.

Resumo

O github actions se encarregará de construir uma AMI contendo uma simples aplicação (python), e em seguida provisionará uma instância EC2 na AWS a partir dessa AMI.

Requisitos

Conta na AWS

Conhecimentos básicos de AWS

Conta no github

Utilitário git

Conhecimentos básicos de github

Access Key e Secret Key de um usuário AWS com privilégio administrativo

Preparando o Ambiente

Crie bucket S3 na conta da AWS com nome packer-terraform-github-actions

Crie um repositório público vazio na sua conta do github com o nome packer-terraform-github-actions

Após criar o repositório vá até a seção Settings > Secrets e crie 3 secrets, colocando seus respectivos valores:

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

AWS_DEFAULT_REGION

Você verá algo como mostrado na imagem a seguir após a criação das secrets:

Clone o repositório no seu computador local e entre no diretório criado:

Código

Vamos agora criar o código da nossa aplicação, para isso, crie um arquivo com nome main.py e cole o seguinte conteúdo:

Agora criaremos o código terraform que provisionará uma instância EC2 na AWS onde nossa aplicação vai ser executada. Cole o seguinte conteúdo em um arquivo com nome main.tf:

Como nossa ideia é que a aplicação seja inicializada logo que a instância for iniciada, vamos integrar nossa aplicação ao systemd do sistema operacional, no caso o Amazon Linux 2. Para isso, crie um arquivo com nome myapp.service com o seguinte conteúdo:

Vejam que na linha 8 do arquivo myapp.service indicamos que para subir o serviço será executado o arquivo shell de nome myapp.sh, então vamos criá-lo:

Agora vamos criar o arquivo (main.pkr.hcl) que a partir do utilitário Packer, contruirá a imagem (AMI) contendo a aplicação:

Crie o seguinte diretório e subdiretório:

Agora para encerrar nossos códigos, crie um arquivo com nome main.yml e salve no subdiretório que criamos acima:

Agora vamos realizar o commit e push de tudo o que fizemos:

Volte no seu repositório no github e entre na seção Actions, se fizemos tudo certo veremos o workflow sendo executado. O processo concluirá em aproximadamente 6 minutos, ao final você terá acesso a aplicação via IP público, veja na console da AWS qual o IP e acesse via browser com a seguinte URL:

http://ip-public:5000/test

Conclusão

Realizamos uma PoC com github actions, envolvendo a criação de uma imagem (AMI) com uma aplicação python e provisionada via terraform. A ideia do artigo foi apenas mostrar o básico do github actions, são inúmeras as possibilidades, espero ter ajudado.

Bruno Santos
Bruno Santos

Written by Bruno Santos

Pai, marido, filho, irmão, tio, cristão, profissional de TI, corintiano, chef e fã de comida japonesa

Responses (1)