Serverless Framework: Gerando artefatos para deploy em CI/CD

Nesse artigo, veremos como gerar artefatos de para deploy em seu pipeline de CI / CD para 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ê deve 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

  • 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:

  1. Fazendo upload do arquivo zip para um bucket S3.
  2. Atualizando o modelo CloudFormation e adicionando os caminhos do bucket S3 para os arquivos zip do Lambda.
  3. O envio do modelo ao CloudFormation para iniciar a implementação na AWS.

Gerando Artefatos de Deploy

$ 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.