Skip to content

更新回落转发侧接线(G79):file_server / cache 现已成功转发至 nginx,新增全局选项 `fallback… #3

更新回落转发侧接线(G79):file_server / cache 现已成功转发至 nginx,新增全局选项 `fallback…

更新回落转发侧接线(G79):file_server / cache 现已成功转发至 nginx,新增全局选项 `fallback… #3

Workflow file for this run

# 门禁(2026-08-21 批 13,owner 拍板:GitHub Actions 跑**全量**)
#
# ★ ★ ★ **这里只有一条命令,而且与本机那条逐字相同**:`bash tests/m0/docker-run.sh`。
# 这不是省事,是判据纪律:CI 若自己拼一套「等价的」步骤,就会长出**第二套判据**,
# 而两套判据迟早分家 —— 那时「CI 绿」与「门禁绿」是两件事,
# 却没有任何东西会说出来。本仓库为这个形状栽过好几次。
#
# ⚠ ⚠ **有意不写 `paths-ignore`。** 「只改文档就跳过 CI」看起来是白捡的省钱,
# 实际是错的:`crates/fulcrum-config/tests/doc_contract.rs` 用 `include_str!`
# 读 `docs/architecture/dsl-reference.md`,`crates/fulcrum/tests/supply_gates.rs`
# 读根 `Cargo.toml`/`Cargo.lock`,而批 11 那道门还反向断言
# **已接线的能力不许出现在 `dsl-reference.md` 里**。
# ⇒ **一次纯文档改动是真的能把门禁弄红的**,跳过它就等于把这类缺陷放行,
# 而现象是「CI 一直绿」。省钱要从别处省(见下面的 concurrency 与 timeout)。
#
# ⚠ **本仓库是私有仓库 ⇒ Actions 分钟数是计费的。** 两条止血阀都在下面:
# · `concurrency` + `cancel-in-progress`:连着推几次时,只有最后一次跑到底;
# · `timeout-minutes`:卡死的任务最多烧这么多,而不是默认的 6 小时。
name: gate
on:
# ★ 只在 main 上跑:owner 的口径是「直接提交 main,不开分支不开 PR」。
push:
branches: [main]
# 手工触发,用于改完 workflow 自身之后重跑。
workflow_dispatch:
concurrency:
group: gate-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
gate:
# ★ 钉住大版本,不用 `ubuntu-latest`:M1 的 systemd 场景依赖宿主机是 **cgroup v2**,
# 而 `ubuntu-latest` 换代时不会有任何一行输出告诉我们环境变了。
# 与 G36 钉构建镜像、Dockerfile.systemd 钉 systemd 版本是同一条纪律。
runs-on: ubuntu-24.04
# 冷缓存下要整编 pingora fork + 全部依赖,再跑十二个场景。
# ⚠ 这个上限是**计费止血阀**,不是预期耗时;真实耗时见每次运行的记录。
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
# ★ ★ runner 上 `/` 只有二十几 GB 空余,而这里要放:rust 构建镜像、
# systemd 测试镜像、cargo registry、**release 模式的整个 target**。
# ⚠ 磁盘满的报错形态五花八门(链接器 OOM、docker 写层失败),
# 而没有一条会说「磁盘满了」。先腾出来,比事后猜便宜。
- name: 腾出磁盘
run: |
echo "── 清理前 ──"; df -h /
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \
/usr/local/share/boost /usr/local/.ghcup "$AGENT_TOOLSDIRECTORY" || true
echo "── 清理后 ──"; df -h /
# ★ 每次都把环境打出来。§8 要求可复现,而可复现的第一步是**看得见跑的是什么**。
# ⚠ cgroup 那一行是判据相关的:M1 的 `ExitType=cgroup` 要求容器侧 systemd ≥ 250
# 且宿主机是 cgroup v2 统一层级。它变成 v1 的那天,M1 场景会以一种
# 看起来像产品缺陷的方式红。
- name: 环境快照
run: |
echo "── docker ──"; docker version
echo "── 内核 ──"; uname -a
echo "── cgroup 层级 ──"; stat -fc %T /sys/fs/cgroup
echo "── git 行尾配置(CRLF 门的前提)──"
git config --get core.autocrlf || echo "core.autocrlf 未设(Linux 上的默认,正是要的)"
# ★ ★ ★ 就这一条。与 AGENTS.md「Current validation」第 3 条、
# 与每份交接单里写的那条命令,**逐字相同**。退出码就是判据。
# ⚠ 绝不接管道:`| tee` / `| tail` 取回的是右边那个命令的退出码(本仓库栽过)。
- name: 全量门禁(十二场景)
run: bash tests/m0/docker-run.sh