Skip to content

v1.2.0|可恢复安装事务与可证明的自动发布

Choose a tag to compare

@github-actions github-actions released this 17 Jul 15:12
· 25 commits to main since this release

v1.2.0|可恢复安装事务与可证明的自动发布

发布范围

v1.2.0production-delivery-orchestrator 的运维加固版本。技能名称、目录结构、原生目标、项目桥接格式和既有安装参数保持兼容;v1.1.0 保留为直接回滚版本。

主要更新

1. 多目标安装成为可补偿事务

  • 安装器在写入前预检全部原生目标与桥接文件,并为所有将修改的路径建立快照;
  • 任一技能目录或桥接写入失败时,已写入的目标会逆序恢复,包括原有目录和规则文件内容;
  • 进程异常中断会保留项目级或用户级 journal。使用原安装相同的 --scope--project-dir--targets--bridges--custom-bridge 参数加 --recover 可恢复未完成安装;
  • 恢复前严格校验 journal schema、事务根目录、备份布局、路径边界和符号链接。journal 被篡改、备份缺失或路径越界时会失败关闭,不会触碰目标文件;
  • 已提交但来不及清理的 journal 只清理自身备份,不会回退已成功安装的内容。

2. 版本和制品由机器可读元数据驱动

  • release/metadata.json 是版本、tag、回滚版本、兼容范围、Release 说明和 attestation 策略的单一来源;
  • release/build_release.py 以该元数据构建确定性的 ZIP、provenance.jsonSHA256SUMS.txt,并可离线复核 ZIP 成员、manifest、canonical artifact hash 与校验和;
  • 构建器使用跨平台的 UTF-8/LF canonical hash,并固定 ZIP 时间与文件顺序。相同输入、提交和元数据会得到相同三份制品。

3. GitHub Release 制品证明

  • 精确三段 SemVer tag 会触发 .github/workflows/release.yml;工作流校验 annotated tag 与元数据匹配,构建并自验制品,创建中文 GitHub Release;
  • 工作流使用 GitHub Artifact Attestations 为 Release ZIP 创建可验证的构建证明。下载 ZIP 后运行:
gh attestation verify production-delivery-orchestrator-v1.2.0.zip \
  --repo lza6/Agent-skills-code-op

本地的 ZIP、SHA256SUMS.txtprovenance.json 只提供完整性及来源核验;只有 GitHub workflow 的 attestation 步骤成功后,ZIP 才拥有 GitHub 签发的可验证构建证明。历史 v1.1.0 附件没有该证明,不应倒推为已签名。

本地验证

PYTHONUTF8=1 python -m unittest \
  skills/production-delivery-orchestrator/tests/test_install_skill.py -v
PYTHONUTF8=1 python -m unittest release/tests/test_build_release.py -v
python release/build_release.py --output-dir dist
python release/build_release.py --output-dir dist --verify
git diff --check

验收要点:安装器共 20 项测试,覆盖跨目标补偿、持久 journal 恢复、篡改 journal 的项目内/项目外路径、缺失备份、已提交 journal、显式恢复计划和悬空桥接符号链接;Release 构建器共 4 项测试,覆盖确定性、篡改阻断、元数据约束和与 forward harness 的 canonical hash 一致性。

安装、恢复与回滚

安装到 Codex、Claude Code 和通用 Agent Skills:

npx skills add https://github.com/lza6/Agent-skills-code-op/tree/v1.2.0 \
  --skill production-delivery-orchestrator \
  --global \
  --agent codex claude-code

若 Python 安装在异常中断后报告未完成事务,先使用原安装的 scope 和项目目录恢复,再重新执行安装:

python skills/production-delivery-orchestrator/scripts/install_skill.py \
  --scope project \
  --project-dir /path/to/project \
  --targets all \
  --bridges all \
  --recover

回滚到 v1.1.0

npx skills remove production-delivery-orchestrator --global --yes
npx skills add https://github.com/lza6/Agent-skills-code-op/tree/v1.1.0 \
  --skill production-delivery-orchestrator \
  --global \
  --agent codex claude-code \
  --yes

发布者操作

  1. main 上通过本地验证并确认工作树干净;
  2. 确认 release/metadata.json 的 tag 与本说明文件一致;
  3. 创建 annotated tag,例如 git tag -a v1.2.0 -m "release: v1.2.0" 并推送;
  4. 等待 release workflow 成功,再从 GitHub Release 下载 ZIP、checksum 与 provenance;
  5. 执行 sha256sum --check SHA256SUMS.txtgh attestation verify,将实际 run URL、tag commit 和附件 SHA-256 回填到发布核验记录。

不要移动已发布 tag;需要修复时创建后续版本和新的 attestation。

发布核验(2026-07-17)

  • Annotated tag:v1.2.003ad1d944e5c176793995bcb3ef47f3db3ba4218
  • Release workflow:29591153755 成功;其中元数据校验、确定性构建/复验、ZIP attestation 和中文 Release 上传均成功。
  • GitHub Release:v1.2.0,非 Draft、非 Prerelease;附件为 ZIP、provenance.jsonSHA256SUMS.txt
  • ZIP SHA-256:ee53bef30bec90fdb34ea02d4c64757b33c2db4c6c77c63fe3050830c1c7d985;已从 Release 下载三份附件并通过构建器离线复验。
  • gh attestation verify production-delivery-orchestrator-v1.2.0.zip --repo lza6/Agent-skills-code-op 返回成功;tagged npx.cmd -y skills add .../tree/v1.2.0 --list 发现唯一技能 production-delivery-orchestrator