无服务器 Lambda monorepo 项目仅部署更改的文件自定义 CI 文件

Serverless Lambda monorepo project deploy only changed files custom CI file

我们开发一个项目,所有RestApi服务都是一个Lambda函数,我们使用无服务器框架进行AWS Lambda部署。项目是单一回购。

文件夹结构是这样的

./app (this is shared folder and a layer on AWS )
  - /Models
  - /Helper
  - ...
./services
  - /ServiceGroup
    - /service1
      - service.handler
      - config.yml
    - /service2
      - service.handler
      - config.yml
  - /AnotherServiceGroup
    - /service3
        - service.handler
        - config.yml
      - /service4
        - service.handler
        - config.yml
- serverless.yml (this yml configuration file is including all services configuration files)

我们使用自定义的 gitlab 服务器。这个项目 CI 文件夹 运行 此代码用于 lambda 部署

serverless deploy

此命令部署所有服务,但我们只想部署更改的服务。如何为此自定义 CI?

如果您的所有服务都共享同一个 serverless.yml 文件,它们就位于同一个 cloudformation 堆栈中,因此您的要求不起作用。

您可以使用 serverless deploy function 仅更新一个函数,但会跳过 cloudformation,因此不会创建新资源并且您的堆栈会漂移。您应该在开发期间使用它,但不能用于生产部署。

强烈推荐splitting your stacks。您仍然可以使用 mono-repo,然后您可以根据给定提交更改的文件有条件地部署服务。