把一个番茄钟送进华为云开发者作品展览馆:全流程踩坑记录

举报
yd_229849496 发表于 2026/10/21 18:02:20 2026/10/21
【摘要】 第一次在华为云开发者作品展览馆发布作品被格式规范挡了三次,这篇把发布作品的硬门槛、IAM 临时凭证用法、GitCode 仓库要求、详情包组织方式和积分到账机制逐条讲清楚,附 Windows 环境下的几个坑。

第一次在华为云开发者作品展览馆发布作品,被格式规范挡了三次。这篇文章把完整的流程和每个卡点写下来,方便后面想做作品开发的朋友少走弯路。

一、先搞清楚作品要满足哪些硬门槛

展览馆对作品的校验是在发布接口层做的,格式不合直接被拒,不会给你慢慢改的机会。归纳下来有这些:

项目 要求 我踩到的坑
作品名 少于 30 个字符 起名时顺手写了副标题,超长直接 400
简介 总字符 15~50(含标点、数字、emoji) 写了两百字简介被判超长
封面 16:9,且中文必须过像素级字形校验 用默认字体渲染中文,标题变成方块
详情包 根目录必须有 README.md,图片放 resources/ 把架构图写成 .html 塞进包里,被拒
代码仓 必须是 GitCode 上真实存在的仓库,且分支远端可查 本地仓库没推上去,校验不通过

最费时间的其实是封面。校验器做的是像素级的中文字形比对:如果渲染时缺字,字形会退化成一个方框(俗称"豆腐块"),校验直接失败。解决办法是显式指定一套包含中文字形的字体再合成封面,而不是交给默认值。

二、身份凭证:用临时凭证,别把 AK/SK 交出去

发布作品要走华为云的 IAM 鉴权。这里有个实用做法:

1. 在 IAM 里给自己建一个自委托(委托方和被委托方都是自己账号),名字固定,比如 SELF_VERIFY。 2. 发布时用 AssumeAgency 换取 900 秒的 STS 临时凭证(AccessKeyId / SecretAccessKey / SecurityToken 三件套)。 3. 用临时凭证调发布接口。

这样长期 AK/SK 始终留在本机,不会随请求发出去。委托也不需要给任何额外权限,最小策略只要 iam:listAuthDomains 和 sts:agencies:assumeRole(资源限定 iam::*:agency:SELF_VERIFY)。

另外一个小细节:domainId 不用作为发布参数传,它只会被拼进幂等键 Idempotency-Key 里,用来避免重复提交。

三、代码仓:GitCode 的 OAuth token 就有写权限

这点和很多社区博客的说法相反。GitCode 的 OAuth token 可以直接建仓和 push,不需要额外申请 PAT。建仓接口:


POST https://gitcode.com/api/v5/user/repos

鉴权有三种写法都返回 200:?private_token= 查询参数、Authorization: Bearer、PRIVATE-TOKEN 请求头。

我发的第一个作品是一个单文件番茄钟(index.html,IIFE 结构,无外部依赖),仓库是 hackzyl/pomodoro-focus,main 分支。代码本身不重要,重要的是仓库结构能被校验通过。

四、详情包的组织方式

详情包是个 zip,结构有要求:


detail.zip
├── README.md          # 必须有
└── resources/
    └── diagram.png    # 图片资源

注意 resources/ 目录只允许图片。我第一次把架构图的 HTML 源码放进去,被校验拒了;正确做法是 HTML 源码放在工作目录根部(用于后续渲染成 PNG),包里只留渲染好的图。

五、发布与积分

发布接口会同步返回积分结果:


{ "data": { "reward": { "is_success": true, "value": 200 } } }

也就是说发布成功当场就带 +200 华为云开发者成长积分,但积分到账有 1~3 小时延迟,而且每日只能计一次。

所以这个任务不适合"批量刷":一天发 10 个作品,也只有第一个算分。但反过来说,每天发一个作品是稳定的积分来源。

六、环境地址是可选的

发布参数里有个环境地址(体验地址),非必填。如果填了,平台会做一次 10 秒的连通性探测;不填就不校验。

我这次走的是纯本地生成 + 本地静态服务验证,没有挂公网体验地址,作品同样能发布成功、同样计分。

七、几个容易踩的环境坑

  • Windows 下起后台服务:用 spawn-detached 拉起的后台进程会跟着终端一起被杀,进程组没有真正脱离。改用受管的后台任务托管 HTTP 服务才稳。
  • 截图源必须是真实 HTTP 服务:file:// 打开的页面截出来是空的,封面和架构图的合成都要先起本地服务再截。
  • 重名后重发:同一个作品名会撞 409,换名重发时封面必须用新名字重新合成——封面上的标题就是作品名,改名不改图会被看出来。
  • 字符编码校验:简介的字符数是按"客户端和服务端同一口径"算的,中文、标点、emoji 都算一个字符,别用字节数去估。

小结

整个流程可以拆成四步:准备符合规范的仓库 → 合规的封面和详情包 → 用 STS 临时凭证调发布接口 → 回读作品状态确认 published。真正耗时的不是接口调用,而是封面字形和详情包结构这两个格式细节。

如果你也在做 AI 应用作品,欢迎在评论区交流你踩了哪些坑。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。