gitlab-ci - 无服务器到 AWS - Gitlab CICD
问题描述
我正在使用无服务框架开发应用程序,我想使用 GitLab CICD 在 AWS 中部署它。
按照最佳实践文档,我设置了一个具有以下结构的存储库:
│
├── services
│ ├── customer-api
│ │ └── handler.js, serverless.yml
│ └── payment-api
│ └── handler.js, serverless.yml
│
├── serverless-common.yml
└── .gitlab-ci.yml
所以在服务文件夹中我有几个文件夹(每个 api / lambda 一个)。我还设置了以下简单的 GitLab CI/CD
image: node:latest
stages:
- deploy
dev:
environment: dev
stage: deploy
before_script:
- npm config set prefix /usr/local
- npm install -g serverless
script:
- serverless deploy --stage dev --verbose
我遇到的问题是我只想部署有变化的 lambda。
我应该逐个目录在服务文件夹中运行并serverless deploy
为每个 api 运行吗?:
script:
- cd customer-api
- serverless deploy --stage dev --verbose
- cd ..
- cd payment-api
- serverless deploy --stage dev --verbose
您如何使用 GitLab CI/CD 管理无服务器部署?
解决方案
以及关于您的文件夹结构,如果您可以执行以下操作:
│
├── services
│ ├── customer-api
│ │ └── handler.js, customer-api.yml
│ └── payment-api
│ └── handler.js, payment-api.yml
│
├── serverless.yml
└── .gitlab-ci.yml
并在主 serverless.yml 文件中为这些函数提供参考,如下所示:
functions:
customer-api: ${file(./services/customer-api/customer-api.yml)
payment-api: ${file(./services/payment-api/payment-api.yml)
那么你不需要进入每个文件夹来执行 serverless.yml 文件:
script:
- serverless deploy --stage dev --verbose
将是信息。有关更多信息,您可以在此处查看
推荐阅读
- c# - Action 有多个参数被指定或推断为从请求正文绑定。每个动作只能绑定一个参数
- ios - 如果 info.plist 不包含某些键,如何避免应用程序崩溃?
- argocd - 将 TLA 从 argocd 传递到 jsonnet
- reactjs - Reactjs:我必须刷新登录组件才能将经过身份验证的用户重定向到仪表板
- r - igraph 边缘厚度和重量
- redis - 从 sequelize 查询中反映 redis 中更改的数据
- internet-explorer-11 - MGT 组件和 IE11
- c# - 如何使 FlowDocument 的页面宽度大于限制(wpf)
- asp.net-core - EF core join 语句不正确
- google-kubernetes-engine - 为什么我不能在 e2-medium 机器类型上为我的 Pod 使用第二个 vCPU?