GitHub Actions部署Serverless报错:--config不支持对应文件扩展名
问题现象
使用GitHub Actions部署Serverless Lambda函数时,流程中断抛出如下错误:
"Invalid "--config" value: Unsupported file extension (expected one of: yml, yaml, json, js, ts",
涉及的GitHub Actions工作流配置、serverless.yml配置均存放在仓库根目录。
报错根因
- 核心触发原因:
serverless/github-action@v3.x版本的默认入口点已调整为直接调用Serverless CLI,不再默认通过Shell解析传入的args参数。当前配置直接传入-c "serverless plugin install --name serverless-offline && serverless deploy",实际执行的命令等价于serverless -c "serverless plugin install --name serverless-offline && serverless deploy",Serverless CLI会将-c识别为--config(指定配置文件路径)的短参数,把后面的整串命令字符串当成配置文件路径解析,自然无法匹配yml/yaml/json/js/ts这类合法配置后缀,直接抛出扩展名不支持的错误。 - 冗余操作问题:配置中安装的
serverless-offline是本地离线调试专用插件,云端部署阶段不需要安装,该步骤只会拉长工作流执行时长,无实际部署价值。
可行解决方案
- 方案1:适配v3版本Action的规则,显式指定Shell作为执行入口,同时移除冗余的插件安装步骤,修改后的部署步骤配置如下:
- name: Deploy Serverless Service uses: serverless/github-action@v3.1 with: args: -c "serverless deploy" entrypoint: sh env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- 方案2:如果不想调整现有命令写法,可以直接降级使用v2版本的Serverless Action,v2版本默认通过Shell解析传入的参数,原有命令写法可直接兼容,仅需将步骤中的uses字段修改为
serverless/github-action@v2即可。 - 前置校验项:执行部署前确认仓库根目录的
serverless.yml文件无拼写错误(不要出现serverless.yml.txt这类被系统自动追加后缀的情况),同时确认actions/checkout@v2步骤正常拉取了仓库全量文件,避免出现配置文件找不到的次生问题。
内容的提问来源于stack exchange,提问作者Sachin_Tech
相关产品推荐
相关产品推荐

