Como Automatizei o Deploy do Meu Site Estático na AWS S3 com GitHub Actions
Introdução
Recentemente, decidi automatizar o deploy do meu site de portfólio, que é um site estático hospedado no Amazon S3. A ideia era que, a cada nova alteração no repositório do GitHub, os arquivos fossem automaticamente sincronizados com o bucket S3, sem precisar fazer upload manualmente.
Para isso, utilizei o GitHub Actions para criar um pipeline de CI/CD. Neste artigo, compartilho como fiz essa automação e como você também pode aplicá-la no seu projeto.
Configurando o Ambiente AWS - Criando um Bucket no S3
Meu site é um site estático hospedado no Amazon S3. Se quiser saber mais sobre como configurar um bucket S3 para hospedar sites estáticos, confira meu outro artigo no Medium, Como hospedei minha Landing Page profissional na AWS S3: Um Guia Passo a Passo
Criando um Usuário IAM
Para que o GitHub Actions tenha permissão de acessar o bucket S3, criei um usuário IAM:
- Acesse o AWS IAM e crie um novo usuário com acesso programático.
- Anexe a política
AmazonS3FullAccess
ou crie uma política personalizada com permissões restritas ao seu bucket. - Copie as credenciais (Access Key e Secret Key) e armazene-as no GitHub como Secrets.
No GitHub, fui em Settings > Secrets and variables > Actions e adicionei:
Criando o Workflow no GitHub Actions
Agora, configurei um workflow para que, a cada push no repositório, os arquivos fossem enviados ao S3 automaticamente. Para isso, criei um arquivo .github/workflows/deploy.yml
no repositório com o seguinte conteúdo:
name: Deploy para S3
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout do código
uses: actions/checkout@v3
- name: Configurar credenciais da AWS
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-2
- name: Sincronizar arquivos com o S3
run: |
aws s3 sync . s3://eduardolentz.com.br --delete
Isso garante que qualquer alteração no branch main
seja automaticamente enviada para o S3.
Para ver mias do código para acessar o repositório aqui.
Conclusão
Com essa automação, agora toda vez que faço uma modificação no código e faço um git push
, meu site é atualizado automaticamente no S3.
Gostei muito de implementar essa automação, achei o processo bem intuitivo e fácil de configurar. Como o projeto ainda é recente, faço várias alterações no código e essa automação me ajudou bastante, pois agora não preciso mais enviar os arquivos manualmente para o S3 toda vez que faço uma atualização. Imagino que para projetos maiores seja essencial.
Se quiser implementar algo parecido no seu projeto, espero que esse artigo tenha te ajudado! Se tiver dúvidas, deixe um comentário. 🚀