Nesse artigo, veremos como gerar artefatos de para deploy em seu pipeline de CI / CD em seus aplicativos Serverless Framework.
Ao pensar em fazer o deploy ou reverter seu aplicativo serverless, você deve tratar cada serviço como um serviço independente. Isso significa que você deseja criar e gerenciar artefatos de deploy para cada serviço independentemente. E você deseja ter controle sobre o processo de reversão e deploy.
Antes de examinarmos como criar um artefato de deploy para um aplicativo Serverless Framework, vamos primeiro examinar como o comando serverless deploy
funciona internamente.
Como serverless deploy
funciona
Quando você executa serverless deploy
, duas etapas são executadas nos bastidores. O Serverless Framework executa primeiro o serverless package
para empacotar seu código e criar um modelo CloudFormation. Por padrão, o artefato é gerado no diretório .serverless/
da raiz do seu projeto com o seguinte conteúdo:
- Um arquivo zip com o código Lambda para o seu serviço. Ou um arquivo zip para cada função Lambda em seu serviço, caso o empacotamento individual estiver ativado.
- Um arquivo de modelo do CloudFormation que descreve os recursos definidos no seu
serverless.yml
. - Um arquivo
serverless-state.json
usado internamente pelo Serverless Framework.
Depois que o artefato é gerado, o Serverless irá fazer o deploy este pacote:
- Fazendo upload do arquivo zip para um bucket S3.
- Atualizando o modelo CloudFormation e adicionando os caminhos do bucket S3 para os arquivos zip do Lambda.
- O envio do modelo ao CloudFormation para iniciar a implementação na AWS.
Gerando Artefatos de Deploy
Para o nosso pipeline de CI / CD, queremos separar esse processo em duas etapas. Para fazer isso, primeiro faremos o empacotamento:
$ serverless package --package PACKAGE_DIR
Isso irá gerar o pacote no diretório PACKAGE_DIR
Podemos então armazenar este pacote para reutilizá-lo mais tarde. É uma boa idéia marcar este pacote com um commit do Git associado a ele. Ou atribuir algum outro ID exclusivo que possamos usar posteriormente para buscar esse artefato.
Quando estivermos prontos para fazer o deploy deste pacote ou se estivermos tentando reverter para este commit, iremos referenciar o pacote e iniciar o deploy usando:
$ serverless deploy --package PACKAGE_DIR
O PACKAGE_DIR
é onde o artefato para deploy foi gerado.
Se você executar o comando serverless deploy
com a opção --package
, ele ignorará a etapa de empacotamento e usará o artefato que você forneceu.
Isso fornece controle sobre os artefatos de deploy que o Serverless Framework gera, permitindo que ele seja melhor integrado ao seu pipeline de CI / CD.
Créditos
- How to generate deployment artifacts in your CI/CD pipeline for Serverless apps, escrito originalmente por Jack Jiang
Top comments (0)