Skip to content

Cloudfunction template update - #218

Open
alfredhuang211 wants to merge 10 commits into
TencentCloudBase:masterfrom
alfredhuang211:cloudfunction
Open

Cloudfunction template update#218
alfredhuang211 wants to merge 10 commits into
TencentCloudBase:masterfrom
alfredhuang211:cloudfunction

Conversation

@alfredhuang211

Copy link
Copy Markdown
Contributor

更新全部的函数模板

@binggg

binggg commented Jul 8, 2026

Copy link
Copy Markdown
Member

以下是对 PR #218TencentCloudBase/awesome-cloudbase-examples)的完整分析。


PR 概览

字段
标题 Cloudfunction template update
作者 alfredhuang211 (Alfred Huang)
状态 OPEN(未合并)
创建时间 2026-07-02
变更规模 +19,082 / -2,021(一共 9 个 commits)
Review / Comments 0 reviews, 0 comments
Labels

这是一次什么变更?

一句话概括:cloudfunctions/ 目录进行全量重构,统一函数模板的目录结构和元数据格式。

作者在 PR body 中只写了一句话"更新全部的函数模板",但从 diff 来看,这实际上是一次跨越 200+ 文件的工程级重构,核心动作有三:

1. 🗑 删除旧结构(~50 个旧文件被移除)

所有旧式 cn/ / en/ 双目录结构被整体清除:

被删除的模板 涉及的文件
book-analytics-aggregate cn/, en/ 下的 JS 源码 + package.json + README
book-management-model 同上
custom-auth 同上
get-openid 同上
hono-template 同上
http-function 同上,含 scf_bootstrap
openapi-get-phonenumber 同上
post-management-collection 同上
scf-helloworld 同上
transaction 同上
user-management-sql 同上
wxpay-common / wxpay-product 同上

2. ➕ 新增统一结构的 HTTP 函数模板(~150 个新文件)

每个新增模板的目录结构统一为:

http-{lang}-{framework}/
├── README_cn.md              # 中文文档
├── README_en.md              # 英文文档
├── cloudbase-template.json   # 模板元数据(中文)
├── cloudbase-template.en.json# 模板元数据(英文)
├── cloudbaserc.json          # CloudBase 部署配置
├── scf_bootstrap             # SCF 运行时启动脚本
├── build.sh                  # 构建脚本(Go / Java 需要)
└── ... (源码、依赖配置)

新增的 HTTP 函数模板清单(按语言):

语言 模板 说明
Node.js http-nodejs-helloworld 最简 Hello World
http-nodejs-express Express 框架
http-nodejs-koa Koa 框架
http-nodejs-nestjs NestJS 框架(只有配置模板,无源码)
http-nodejs-sse SSE 服务端推送(只有配置模板)
http-nodejs-websocket WebSocket 双向通信
Go http-go-helloworld Go 原生 net/http
http-go-gin Gin 框架
Java http-java-helloworld JDK HttpServer 原生
http-java-springboot Spring Boot
Python http-python-helloworld 最简 Python
http-python-flask Flask 框架
http-python-fastapi FastAPI 框架
http-python-django Django(只有配置模板)
PHP http-php-helloworld 最简 PHP
http-php-laravel Laravel 框架
http-php-slim Slim 框架

3. 🔄 旧 Event 函数模板重命名为 scf-nodejs-* 格式

原有的 scf-* 函数被重命名为 scf-nodejs-* 并适配新配置格式:

scf-nodejs-helloworld/
scf-nodejs-book-analytics-aggregate/
scf-nodejs-book-management-model/
scf-nodejs-custom-auth/
scf-nodejs-get-openid/
scf-nodejs-hono-template/
scf-nodejs-openapi-get-phonenumber/
scf-nodejs-post-management-collection/
scf-nodejs-transaction/
scf-nodejs-user-management-sql/
scf-nodejs-wxpay-common/
scf-nodejs-wxpay-product/

同时删除了原来独立的多语言子目录(scf-go-helloworld/, scf-golang-helloworld/, scf-java-helloworld/, scf-php-helloworld/, scf-python-helloworld/)——推测这部分能力已被迁移到上面的 http-*-* 模板中。

4. 📋 新增配套基础设施

文件 说明
cloudfunctions/README.md 云函数示例集的根文档
cloudfunctions/template-info.csv 模板元数据清单
cloudfunctions/scripts/ 部署测试脚本、TEST_PLAN、测试矩阵
cloudfunctions/templates-sync/ 模板同步工具链(pull/push/构建/标题规范化等)
.gitignore 新增忽略 .codebuddy/.vscode/

问题清单(Code Review 要点)

⚠️ 问题 1:二进制文件和构建产物被提交

严重等级:高

以下文件不应进入版本控制:

  • http-go-gin/mainhttp-go-helloworld/main(Go 编译产物)
  • http-java-helloworld/app.jarhttp-java-springboot/app.jar(Jar 包)
  • http-java-*/target/ 目录下的所有 .jar.original.class、Maven 状态文件

建议:删除这些文件,更新 .gitignore,让用户自行 build.sh 编译。

⚠️ 问题 2:模板代码是否可运行?

PR 没有说明这些新模板是否经过部署验证。建议:

  • 至少对每个语言的 Hello World 模板进行端到端部署测试
  • TEST_PLAN.md 中有提到测试矩阵,但 PR 本身没有关联测试结果

⚠️ 问题 3:NestJS / SSE 模板缺失源代码

http-nodejs-nestjs/http-nodejs-sse/ 下面只有元数据配置,没有 index.js / package.json / scf_bootstrap 等运行所需文件。不完整。

⚠️ 问题 4:hono-template 被整体删除但新增了 scf-nodejs-hono-template

hono-template/en/ 被删除,新增了 scf-nodejs-hono-template/。但是 Hono 是一个有实际价值的框架,旧版 hono-template 有完整源码,新版只有配置模板。建议保留完整的 Hono 示例源码

⚠️ 问题 5:旧模板 scf-* 被删除但有些可能有用户依赖

scf-go-helloworldscf-java-helloworld 等被整体替换为 http-*-* 模板。接口签名是否兼容?需要评估对现有用户的破坏性。

⚠️ 问题 6:PR 说明过短

Body 只有"更新全部的函数模板"一句话。这么大的变更(+19k / -2k lines)缺少:

  • 变更动机说明
  • 破坏性变更清单
  • 迁移指南

总结

维度 评价
变更意图 ✅ 好——统一模板结构,多语言覆盖,加入部署配置
工程质量 ⚠️ 二进制/构建产物被提交,应去掉
完整性 ⚠️ NestJS/SSE 只有骨架,无源码
可维护性 ✅ 引入 templates-sync/ 工具链,正向
兼容性 ⚠️ 破坏性变更,需迁移说明
沟通 ❌ 描述太简略,缺少 context

建议操作: 要求作者修复二进制文件问题、补全缺失的模板源码,并补充 PR 描述说明变更动机和迁移影响,然后再进行合并。

@binggg

binggg commented Jul 28, 2026

Copy link
Copy Markdown
Member

P0 — 部署会挂 / 明显错误

  1. NestJS 模板不可用

    scf_bootstrap 执行 node dist/main.js,但仓库里没有 dist/,cloudbaserc 也没有 build 步骤。installDependency: true 只装依赖,不会 nest build。一启动就挂。

  2. Go/Java 二进制产物入库(约 58MB)
    • http-go-/main、scf-go-helloworld/main(Linux ELF)
    • http-java-
    /app.jar + 整棵 target/

    .gitignore 也没挡这些。应删掉,靠 build.sh 本地编译。

  3. scf-nodejs-helloworld 函数名污染

    cloudbaserc.json 里 name 写成了 test-scf-nodejs-helloworld,像是测试残留,按文档部署会建错名字。

  4. Laravel / Slim 是假模板

    public/index.php 只是手写 echo json_encode(...),没用框架;但 composer.json 却声明了 laravel/framework / slim/slim。
    同仓已有完整版 httpfunctions/laravel/,对比更明显。名字会误导用户。

P1 — 配置/文档不一致,容易配错

  1. README 写了不存在的文件

    说可用 cloudfunctions/cloudbaserc.json 批量部署,但该文件不存在。

  2. README 说 Go/Java/PHP HTTP 用 CustomRuntime,实际配置是 Go1 / Java8 / Php7.4

    文档和 cloudbaserc 对不上,按文档改会配错。

  3. Hono 类型错位(test-matrix 已标 warnOnly)

    代码是 Hono HTTP 风格,配置却是事件型 SCF。

  4. Django 用 runserver 当生产启动

    manage.py runserver 不适合 SCF;同仓云托管 Django 模板也不是这么做的。

P2 — 工程质量

  1. FastAPI/Flask workers=2:serverless 上偏浪费且可能不稳定。
  2. README 命名不统一:Readme_cn.md vs README_cn.md。
  3. PR 描述仍只有一句话,缺迁移说明(旧 cn/en、旧 scf-* 路径变更)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants