Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ jobs:
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
with:
fetch-depth: 0
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
Expand Down Expand Up @@ -122,6 +123,7 @@ jobs:
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
with:
fetch-depth: 0
persist-credentials: false

- name: Download publish artifacts
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ jobs:
RULES_BUILD_SCOPE: full
ARTIFACT_GENERATION_ID: pr-${{ github.event.pull_request.number }}-${{ github.run_attempt }}
ARTIFACT_BUILD_ID: ${{ github.run_id }}
ARTIFACT_SOURCE_SHA: ${{ github.event.pull_request.head.sha }}
ARTIFACT_SOURCE_SHA: ${{ github.sha }}
run: ./scripts/commands/build-artifacts-transaction.sh

- name: Show release candidate summary
Expand Down
2 changes: 1 addition & 1 deletion docs/DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ make clean
- `make build-custom`:生成自定义文本和二进制产物。
- `make preflight`:`make validate` 加文本自定义构建;不执行完整同步、产物守卫(artifact guard)或发布。
- `build-artifacts-transaction.sh`:CI 的完整入口。它在 `.tmp/` 中以事务自有的 `RULES_ARTIFACT_ROOT` 组合上游同步或已发布分支恢复、自定义构建、守卫、摘要、manifest 生成与验证;调用方提供 `RULES_ARTIFACT_ROOT` 会被拒绝,测试或运维如需改变最终提升位置应使用 `RULES_LIVE_ARTIFACT_ROOT`。全部成功后才以目录替换提升为 `.output/`(或该显式 live root)。失败诊断写入非发布目录 `.artifacts/diagnostics/`,旧 live root 保持不变。`config/upstreams.json` 为每个源声明 parser、required/optional、原始字节、规范条目、地址族和 fallback policy;required 源的传输、fallback 或语义健康回归都会在提升前失败。每个 RIPE Stat ASN 响应和合并分组都使用 `ripe-stat` health policy,过小或无效响应会先写入诊断摘要再阻断事务。自定义恢复要求五个发布分支具有相同 generation/source 身份,并把分支 commit 写入 manifest restoration metadata。缺失分支的跨平台有损转换默认禁用,仅可用 `RULES_ALLOW_LOSSY_RESTORE_FALLBACK=1` 显式开启。
- `generate-artifact-manifest.sh`:在构建与守卫完成后、写 manifest 前,按能力配置中的 `verifier` 分派器验证每个产物;缺失或未验证的二进制会阻断生成。默认位于 `.output/`,事务内服从 `RULES_ARTIFACT_ROOT`。调用方应明确提供 generation id、build scope,CI 还将 source SHA 绑定到 `github.sha`。
- `generate-artifact-manifest.sh`:在构建与守卫完成后、写 manifest 前,按能力配置中的 `verifier` 分派器验证每个产物;缺失或未验证的二进制会阻断生成。默认位于 `.output/`,事务内服从 `RULES_ARTIFACT_ROOT`。调用方应明确提供 generation id、build scope,CI 还将 source SHA 绑定到实际 checkout 的 `github.sha`:PR 验证记录被测试的合并提交,正式发布记录 `main` 提交
- `verify-artifact-manifest.sh`:严格重算所选 artifact root 内的可发布文件集合、路径、大小和 SHA-256,并重新执行产物验证、核对能力/lock 与可选 source SHA;发布 job 在恢复或安装锁定工具后强制执行同一验证。

二进制验证使用固定工具的真实读回接口:`.srs` 执行 `sing-box rule-set decompile` 并解析 JSON;`.mrs` 执行 `mihomo convert-ruleset <domain|ipcidr> mrs INPUT OUTPUT`。对仍有规范自定义源的二进制,读回规则总数和类型计数必须匹配 compiler 输入。恢复分支和上游二进制没有保留逐产物规范 compiler 输入,因此仅记录真实读回计数及 `canonical_linkage.status=unavailable`,不宣称语义 round-trip。manifest 每个产物记录验证状态、方法、读回计数和规范计数关联。
Expand Down