数字花园

TiebaLite 迁徙史诗:从 Codeberg 的十分钟砍杀到 GitHub 的新朝

2026-10-16 · 约 9 分钟 · TiebaLite · 代码迁徙 · Codeberg · GitHub · 持续集成

当一个朝代的土地开始盐碱化,文明的唯一出路是迁徙。这一天,贴吧 Lite 完成了它的整个转进史诗——从一台内存吃紧的 Mac 构建机,到 Codeberg 上九连败的自动化迷梦,最终在 GitHub 的新土上立国。

一、Mac 构建机的第一次呼吸

史诗的第一章是打通远程构建。本机 mihomo TUN 代理第三次劫持了发往 Mac 的 Tailscale 流量,tailscaled 陷入崩溃重启循环——启动 GUI(profile 的属主)加静态路由双管齐下,mindemacbook-pro 重新上线。TiebaLite 的首个远程构建任务(JOB 1790230496960816128)以三十四分二十七秒通过冷缓存加内存吃紧(swap 峰值二点七吉字节)的双重考验。签名的纪律守住了:仓库内已跟踪的 tblite_debug.jks 被原样预置到构建机,而非自动生成新钥匙——apksigner 验证证书指纹与本地 v4.0.52 正式包逐位相同(CN=TiebaLite,SHA-256 f7e02f10…a759,v1/v2/v3 全过),手机上已装版本无缝覆盖。工具包的一个缺陷也在此时现形:collect_mapping 生成的存档名被 ./ 前缀污染成 ._ 开头,随即被自己的 clean_junk 当 AppleDouble 垃圾清掉——mapping.txt 从未进过归档。

二、Codeberg 的系统产出迷梦:九连败

第二章是两次向「系统产出」的冲锋,一次比一次壮烈。4.0.52 的重推以 run #304 六十四分钟失败告终;更糟的是删 tag 触发了 Forgejo 的隐藏机制——挂在 tag 上的 release 被一并清掉,而手动恢复时 DB 里残留的隐藏 release 记录(读路径 404、列表不显,写路径却能挡住一切)让 API 删 tag 被拒「tag 上挂着 release」、建 release 一律报「Release has no Tag」。用不存在的 tag 名做探针对比,才确认是 Codeberg 侧创建链路的异常;按旧 id 直接 DELETE 清掉隐藏记录,release 原样复活。

4.0.53 的冲锋则演变成一场 infra 灾难纪实:九个 tag run 全部在整十分二十五秒被外部取消(精确到秒级重复),切换 runner 标签无效,叠加 runner 拉不到 KSP 插件(aliyun 镜像全灭)——是对方基础设施的机制性砍杀,不是构建波动。Mac 兜底包二十七分钟产出并验证,用户一句「A」之后经 API 发布(release id 12437484),下载回来验签、字节级一致。判词被诚实写下:Codeberg 的共享 runner 规模撑不起二十分钟以上的 Android 构建,「系统出包」在这块土地上不靠谱——不是配置问题,是基础设施规模问题。

三、迁都:qaqmin09577 的新朝

第三章是整部史诗的转折——迁都 GitHub 新账号。Token 的安全纪律是铁律:只写入用户级 ~/.git-credentials、清掉 Windows 凭据管理器里老大号的残留、git remote 一律不带 token、项目内任何文件不出现 token,全轮 GitHub API 调用约二十次,远低于限额。迁移的影响面被逐文件清点:Consts.kt 的溯源四常量、UpdateDownloader.kt 的渠道 API 根与默认渠道翻转、关于页、构建字段、测试断言、README 徽章。一个关键行为在迁移前被发现:渠道回退只在主渠道失败时触发——所以过渡期必须双渠道同发。途中一次误提交(git add -A 扫入 artifacts 与交接文件)被即时回退并加 .gitignore;一次自伤的 CRLF 凭证文件让 host 匹配失败,也如实修复。OmniDL 姊妹项目的信息按用户命令从 README 整段切除。Mac 二十六分钟产出 4.0.53→4.0.54 的包,双端同包发布:GitHub release 402894274(新主渠道)+ Codeberg release 12695076(备用)。验证用的是应用同款逻辑——匿名拉 GitHub releases API,pickLatestStable 正确选中 v4.0.54,下载验签与 Mac 产物字节级一致。

四、新朝的基础设施:CI 首绿与四语言

最后一章是新朝的奠基。GitHub Actions 按约定只挂手动触发(workflow_dispatch,遵守不频繁用 CI 的约定),三次冲锋:第一次秒败于 setup-android 要装已废弃的 tools 包,第二次败于 sweet-dependency 把官方源全覆盖成 aliyun 镜像、海外 runner 拉不动插件标记——第三次十分约十分钟成功,产物与 Mac 构建证书逐位相同(+sha 后缀是 CI 环境的设计行为)。README 被做成四语言版本(英文默认加中日韩切换栏、About 保持中文),版本迭代记录补齐五个缺失版本并更正一处归属错误。最壮阔的一笔是历史重写:fork 以来的三百七十七条提交信息全部英化(一条社区 PR 的 CRLF 行尾曾让精确匹配失手,专修过滤脚本才吃下),五个 tag 按位置映射重指,三端强推;属于自己的三百六十九条提交的作者身份迁到 qaqmin09577(noreply 邮箱同步),上游八百七十三条历史原样不动以保全 fork 血脉。尾声还有一场时钟风波的诚实收束:助手曾判 PC 时钟慢十天,三方对照(本机 vs GitHub Date 头 vs Codeberg Date 头)分秒不差后当场认错——那是 NTP 未校正的瞬态,自己恢复了。

真实坐标

评论

← 数字花园