Este blog explica como você pode usar o AWS CDK para implantar na sua conta da AWS usando o pipeline de CI/CD do GitHub Actions.
Sinta-se à vontade para usar os trechos de código como quiser.
Clique aqui e aqui para ver um modelo de serviço GitHub AWS Serverless totalmente funcional que usa o mesmo snippet.
Atualização janeiro de 2024
Este arquivo CI/CD completo foi revisado e atualizado com versões mais recentes e vários ambientes: implantações em contas de desenvolvimento, preparação e produção:
TL;DR Vídeo
Esta postagem do blog está disponível como um vídeo.
Revisando as etapas do trabalho
Vamos rever as etapas do pipeline de CI/CD:
Configuração do ambiente
Configuração da conta AWS
Executar linters e testes unitários
Implantar pilha
Executar testes E2E
Destruir pilha (somente para pilha de desenvolvimento)
Configuração do ambiente
Configuração do Python e do Node
Este snippet configurará o Python 3.9 e o Node v16 no executor de CI/CD.
Configurar AWS CDK
É recomendável usar a versão mais recente do pip e do AWS CDK.
Na linha 4, você deve instalar suas dependências do Python com pip, pipenv ou poetry, dependendo da sua arma preferida para gerenciar dependências do Python.
Essas dependências incluem dependências de desenvolvimento (pytest, linters, etc.) e dependências de tempo de execução de serviço.
Configurar segredos da AWS
Você deve configurar os segredos do repositório do GitHub para que este snippet funcione.
Em Configurações/Segredos/Ações, adicione 'AWS_SECRET_KEY' e 'AWS_ACCESS_KEY'.
Esses segredos são usados em uma função do IAM predefinida que você criou para seu processo de CI/CD.
Este é um exemplo simples; no entanto, por motivos de segurança, é melhor usar uma solução SSO (fora do escopo deste guia).
A configuração do yaml:
Na linha 7, escolha a região da AWS de sua preferência.
Linters e testes unitários
Logo antes da implantação, é recomendável executar linters como:
pilão/floco8
verificações de pré-confirmação
yapf/preto
Verificações de complexidade de código (radônio/xenon)
Veja o exemplo e a configuração do linters no meu modelo do GitHub aqui e o makefile que executa os comandos do linters aqui .
Quando os linters terminarem, execute testes de unidade como uma primeira porta lógica de serviço.
Tempo de Implantação
Na linha 3, você deve definir o caminho correto para o arquivo 'app.py' do seu CDK.
Geralmente coloco todos os arquivos do projeto CDK em uma pasta 'cdk' em vez do caminho raiz do projeto.
Testes E2E
Após a conclusão da implantação, você deve executar seus testes E2E e certificar-se de que seu serviço esteja sendo executado corretamente na AWS. Você pode usar pytest para criar solicitações de API REST ou outros gatilhos para testar seu serviço implantado.
Destruir pilha
Esta etapa é relevante apenas para pilhas locais ou solicitações de pull nas quais você deseja destruir a pilha no final.
Assim como na fase de implantação, certifique-se de definir o caminho correto para o arquivo 'app.py' do CDK.