核心是利用github actions(linux虚拟机)自动化完成serverless项目构建、校验与部署准备,产出可信产物供cd阶段使用;ci阶段聚焦代码验证、配置合规与本地运行测试,不涉及真实部署,通过s build生成zip包等制品并上传artifacts实现ci/cd解耦。

在Linux环境下用GitHub Actions构建Serverless模式的CI流水线,核心不是“在Linux上跑Serverless”,而是利用GitHub Actions(运行在Linux虚拟机上)自动化完成Serverless项目的构建、校验与部署准备。整个过程无需自己维护服务器,完全契合Serverless“按需执行、免运维”的理念。
明确CI阶段的目标和边界
Serverless项目的CI阶段重点在于验证代码可构建、配置合法、函数可本地运行,而非真正上线。它不直接调用云厂商API部署,而是产出可部署产物(如打包好的函数zip、YAML模板、镜像等),为后续CD阶段提供可信输入。
- 拉取代码后,安装Node.js/Python等运行时依赖
- 执行
s build(Serverless Devs)或sls package(Serverless Framework)生成部署包 - 运行单元测试(Jest/Mocha/pytest)和静态检查(ESLint、Pylint)
- 校验
serverless.yml或s.yaml语法是否合规
编写轻量、声明式的.github/workflows/ci.yml
配置文件应聚焦验证逻辑,避免嵌入部署密钥或云账号信息——这些属于CD范畴,CI阶段只需读取公开配置。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 触发条件设为
push到main或pull_request,确保每次变更都受检 - 使用
ubuntu-latest作为runner,天然适配Linux环境下的构建命令 - 跳过
npm install -g全局安装,改用npx s build或npx serverless package,减少缓存干扰 - 用
actions/cache@v3缓存node_modules或.serverless目录,加速重复构建
集成Serverless Devs实现标准化构建
Serverless Devs提供了面向多云的统一构建指令,比手动写Shell脚本更可靠。CI中只需调用其CLI,无需关心底层云平台差异。
- 添加步骤:
- run: npm install -g @serverless-devs/s - 执行构建:
- run: s build --debug(--debug便于排查依赖缺失问题) - 验证输出:
- run: test -f .s/build/artifacts/function.zip确保产物生成成功 - 若项目含前端静态资源,可追加
s build frontend并检查dist/目录是否存在
产出制品并传递给CD阶段
CI阶段结束前,把构建产物(zip包、YAML模板、版本号)作为artifacts上传,供CD流程下载使用,实现CI/CD解耦。
- 用
actions/upload-artifact@v3上传.s/build/artifacts/目录 - 用
actions/core@v4设置输出变量,例如echo "VERSION=$(date +%Y%m%d%H%M%S)" >> $GITHUB_OUTPUT - 在CD workflow中通过
needs.ci.outputs.VERSION引用该版本号,用于打Tag或更新OSS路径
不复杂但容易忽略:CI阶段保持无状态、只读、快速反馈,所有耗时操作(如真实部署、压测)必须后移到CD。这样既安全,又符合Serverless设计哲学。










