华为云开发者成长任务闯关记:一天拿下 3340 积分的可复现路径
华为云开发者成长任务闯关记:一天拿下 3340 积分的可复现路径
背景
华为云开发者成长中心有一套"成长任务"体系,完成任务得积分,积分可兑换代金券。任务分两类:每日任务(浏览案例、体验 DevSpace、发文章等,需 SSO 登录行为埋点)和可完成任务(沙箱部署、ECS 部署、展览馆发布、GitCode Star/Issue 等,可由 API/CLI 提交凭证)。
最近我把"可完成任务"这一档全部跑通:沙箱部署 1000 分、ECS 部署 2000 分、展览馆发布 200 分、Agent 实践中心 Star+Issue 50 分、鸿蒙案例 Star 30 分,合计 3280 分(加上每日任务里的发文章 60 分,单日可到 3340)。本文把这条路径完整记录下来,给同样在闯关的开发者一个可复现的参考。
一、先摸清任务地图
成长任务通过一个 REST 接口查询:
POST https://devdata.huaweicloud.com/rest/developer/.../growth/mission/query-mission-list-by-condition
Body: {"page_no":1,"page_size":50,"category_key":"DAILY_MISSIONS"}
返回里每个任务带 mission_id、reward(积分)和 is_finish。关键是要区分哪些任务"做"和"提交"是同一动作(如沙箱部署,部署完即提交),哪些需要额外提交凭证(如展览馆发布要传 workId)。先把地图理清,再按性价比排序逐个击破,比闷头做高效得多。
二、沙箱部署(1000 分)
沙箱是 DevKit 提供的临时开发环境,适合快速把静态站点暴露到公网:
- 签协议:首次使用沙箱需签署服务协议,一次性操作。
- 连接沙箱:调用沙箱连接接口,获取会话。高峰期会遇到
No available node pool,等几分钟重试即可。 - 上传与部署:把
index.html上传到工作目录,用 Nginx 静态模式托管,指定端口。 - 暴露隧道:通过 DevBridge 把端口映射为
https://xxx.devbridge-s2.hwtunnel.com公网域名。 - 验证提交:
curl -sI确认 200 后,提交 beginner 任务凭证。
一个容易忽略的点:隧道暴露后有短暂的就绪延迟,务必先健康检查再提交,否则可能提交一个尚未可访问的地址被判失败。
三、ECS 持久化部署(2000 分)
沙箱是临时的,持久化上线要靠 ECS。在 cn-north-4 区域按量创建 1 核 2G 实例(Rocky Linux 9.8),流程:
- 复用已有 VPC、子网,安全组放通 80/443。
- 创建 ECS 时绑定 EIP,并在
user_data里写 cloud-init 脚本:开机自动装 Nginx、落盘页面、启动并设开机自启。 - 实例 ACTIVE 后用公网 IP 验证返回 200。
- 提交 intermediate 任务凭证。
- 资源止损:提交成功后立即释放 ECS、EIP,按量付费不留过夜。
cloud-init 把"开机即就绪"做到了极致,省去 SSH 上机配置的环节,整个 ECS 从创建到可访问不到两分钟。
四、展览馆发布(200 分)
这一步要把作品发布到华为开发者大赛的展览馆,再回填 workId 提交:
- IAM 自委托:创建一个委托自己(self-verify)的 IAM 委托,用于生成临时凭证调用发布接口。
- 发布作品:调用
submit-activity-work接口,带上活动 code(如open-capability-2026-1024)和作品信息,返回workId。 - 回填提交:把
workId作为凭证提交到对应的成长任务。
坑点:发布技能脚本如果是从 Windows 仓库 clone 的,可能有 CRLF 行尾,在 Linux 上执行前需 sed -i 's/\r$//' 清理;活动 code 是带日期的,过期会失效。
五、GitCode 协作(Star 50 + Issue 60 分)
GitCode 是华为云生态的代码托管平台,这部分任务靠 GitCode API 完成:
- OAuth 授权:在 GitCode 完成一次 OAuth 授权,拿到 access token,后续 API 用
Authorization: Bearer <token>鉴权。 - 建仓推代码:
POST /api/v5/user/repos创建仓库,注意 path 用英文 slug(不是中文显示名),再 git push 推送项目。 - Star 仓库:
POST /api/v5/repos/{owner}/{repo}/star,按任务要求 Star 指定的实践中心仓库。 - 提 Issue:
POST /api/v5/repos/{owner}/{repo}/issues,在指定仓库提一个有内容的 Issue。
提醒:Star/Issue 的积分识别依赖 GitCode 账号与华为云账号的绑定关系,如果两个账号没绑定,动作做了也可能不计分,提前在账号设置里确认绑定。
六、鸿蒙案例 Star(30 分)
和上一节类似,只是目标仓库换成鸿蒙实践中心(harmony-practice-center)下的指定案例仓库。用同一个 GitCode token 批量 Star 即可,注意控制频率避免触发限流。
七、踩坑与技巧汇总
- 任务状态有延迟:API 返回
is_finish=0不代表没完成,提交成功后状态更新有 1~3 小时延迟,别反复重提交。 - 节点池容量:沙箱/实例在活动高峰可能"无可用资源",做好重试与退避。
- 凭证分级:AK/SK 只用于生成临时凭证,临时凭证只用于完成一次具体操作,绝不落盘进仓库。
- 活动 code 时效:展览馆发布的活动 code 带日期,过期失效,调用前确认最新 code。
- 账号绑定:GitCode 账号与华为云账号务必绑定,否则 Star/Issue 不计分。
- 资源止损:按量付费资源用完立即释放,养成提交成功即清理的习惯。
总结
成长任务的"可完成任务"这一档,本质是把开发者日常会做的动作(部署、发布、协作)结构化成可提交凭证的任务。摸清任务地图、按性价比排序、用 API/CLI 批量执行、做好资源止损,一天拿下三千多积分是可行的。
真正花时间的不是任务本身,而是处理环境问题(节点池、行尾、版本配对)和确认各种隐式前提(账号绑定、活动 code 时效)。把这些坑提前踩平,闯关就变成了一条流水线。
(本文为原创技术分享,记录真实闯关过程。)
- 点赞
- 收藏
- 关注作者
评论(0)