Serverless Framework: Gerando artefatos para deploy em CI/CD
Eduardo Rabelo
Posted on September 3, 2019
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
Posted on September 3, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.