本页内容

本页内容

测试和CI

CI 结帐所有权

结帐所有权

共享 Linux Node 签出 (linux_node_checkout_step) 和共享 Windows/macOS/iOS 签出 (platform_checkout_step) 对这些锚点中的每个 Git 命令使用一个进程所有者。 Linux 允许五次整体签出尝试,在每次尝试之前清理工作区,并具有 120 秒的候选者和可信工作流harness获取截止时间以及逐渐增加的 5 秒退避。 Windows、macOS 和 iOS 保留 90 秒的获取截止时间、仅在超时时进行 3 次候选获取尝试、5 秒退避和 1 次利用获取尝试。候选和harness修订仍然单独固定;当它们完全匹配时,所有者仅将跟踪的操作文件从新签出的索引复制到独立的harness目录中,而无需再次获取或索引更新。不同的修订版保留了单独的稀疏、无斑点harness获取。 Linux 还在深度一获取可选的比较基数,用于棘轮、协议检查、PR 临时报告和更改的 npm-lock 检查。

唯一维护的所有者是 .github/actions/git-owner/owner.py。 pnpm ci:git-owner:gen 将其投影到 ci.yml 中的一个预检出 Python 此处文档中; pnpm ci:git-owner:check、工作流程检查和 Git 边界测试通道拒绝漂移。独立复合操作将其自己的可信字节复制到唯一的运行程序临时目录中,并发布 owner-path 和 CI_GIT_OWNER。两个引导程序都不会从所选候选者中加载所有者。两者都使用隔离的 Python (-I -S) 并且仅使用其标准库,没有 Git 或网络引导程序。

在工作区删除、另一个 Git 命令或步骤完成之前,超时、取消和领导者退出会耗尽拥有的 POSIX 进程组或 Windows 作业对象。清理工作有十秒的时间,与操作截止日期分开。 POSIX 清理使用经过检查的进程普查来区分已终止的僵尸程序和活动写入程序。只有当人口普查证明没有活着的成员时,才可以接受被拒绝的团体信号;实时或未知状态仍然会阻止所有者。检查失败后,KILL在剩余清理津贴内进行群体失踪观察;仅仅等待领导者是不够的。检查或清理失败会关闭所有者并以代码 125 退出;同一策略中的后续调用无法启动 Git。一旦清理成功,取消优先于超时或普通 Git 失败,包括在排出期间收到的取消。仅获取超时并不能解释传输停滞的原因。

终端异常边界以 125 退出,并将 [ci-git-owner] diagnostic= 记录附加到其现有的故障注释中。诊断报告最多四个异常,在隐式上下文之前遵循显式原因,并具有已知的异常类型和有界整数 errno/winerror 值(如果可用)。每个异常最多包含六个所有者源函数名称和行号;这些标识固定所有者修订中的调用。每个异常 256 个回溯帧后遍历停止并标记截断。策略框架、路径、消息、参数、命令、环境和凭证被省略。未知异常类型标记为unknown;诊断故障报告unavailable,无需更换终端出口。 FetchTimeout 仅当存在于链中时才会报告。没有此证据的早期失败保留了未知的原因;仅经过时间或退出 125 无法建立超时或特定失败 API。

直线呼叫者使用--git <seconds> <args>;零表示没有操作期限。恢复策略的使用--policy <trusted-python-file> or --policy -(标准输入上的可信来源)在同一Python加工和导入run_git, git_output, GitFailure, 和FetchTimeout从ci_git_owner。策略仅捕获普通的 Git 故障和操作超时。普通Git退出125和143与该类型边界内的所有权失败和取消保持不同;仅 shell 退出代码无法区分它们。通用 Git 和策略调用不需要GitHub或跑步者环境。run_git接受输出流和命令本地环境覆盖,无需保留 Git 配置;清理始终使用共享的十秒余量。 Git 标准输入总是DEVNULL. git_output返回精确值UTF-8带有不可解码字节的代理转义的文本,保留空格和NUL分隔符;仅检查参考分辨率修剪输出。内联策略允许正在运行的工作流向固定所有者提供其自己的可信策略,而无需从所选结帐导入代码。

预检、手动安全、Python 技能、ClawHub 文档源和 Android 重用该所有者。预检和 Python 技能保留 3 次仅限超时的深度一获取尝试;手动安全保留深度二及其不可用目标后备。 Preflight 会在任何 Git 故障时单独重试深度 2 blobless 父元数据,并验证确切请求的 SHA,即使事件引用发生移动也是如此。 ClawHub 和 Android 保留五次整体签出尝试:仅清除 ClawHub 源目录中的文档,而 Android 清除其候选工作区并需要可执行的 Gradle 包装器。当修订版本匹配时,预检会在完成候选结帐后重用该索引导出;在候选 SHA 解决后,不同的修订保留了固定的 Actions 结帐及其现有的 transport/retry 合约。 Android 保留其单独的可信harness检查。

安全扫描会在第一次经过身份验证的结帐期间、在结帐删除凭据之前获取其 PR-count 派生的历史记录。协议检查、PR 临时报告和更改的 npm-lock 检查同样会消耗在检出期间准备的精确比较 SHA,而无需稍后进行基址提取。手动 npm-lock 调度和目标无需更改检查支持保留完整扫描。 ci.yml 中的剩余补充提取使用来自运行程序临时目录的工作流拥有的引导程序,而不是来自所选候选者的帮助程序。释放门棘轮保留六次合并快照尝试;清理的不确定性或取消会阻止消费者。 Preflight 通过经过身份验证的 GitHub API 调用解析默认分支和发布引用,然后将解析的 SHA 传递到缓存分类和清单规划器。更正基础查找在候选者拥有的代码运行之前完成,并且其令牌保留在清单步骤之外。

锁回收与进程所有权是分开的。 checkout 和 base-fetch 策略仅针对其独占的 checkout 传递 reclaim_locks=True;补充 CI 获取选择等效的 --checkout-git <seconds> <args> 入口点。在获取失败或终止并验证进程树消失后,所有者会删除物理 Git 元数据中新创建的锁;预先存在的锁和链接的元数据保持不变。通用 Git 调用不会声明元数据,因此只读命令也可以在链接的工作树中使用。

共享 ensure-base-commit 操作从其自己的操作包中解析相邻所有者,并在进程中运行其 availability/recovery 策略。它保留 30 秒的获取截止时间:在深度 1 处精确 SHA,然后加深 25、100、300 和 1000。如果基数仍然丢失,则仅当结帐保持浅时,最终的引用获取才使用 --unshallow;完整的结帐使用普通的引用获取。显式获取请求 --filter=blob:none。可用性和浅状态检查使用命令本地 GIT_NO_LAZY_FETCH=1,因此隐式承诺者获取无法逃脱这些预算;下游对象读取保留正常的惰性水合。在成功获取和普通失败后检查可用性,但在取消或未经验证的清理后不会检查可用性。

Workflow Sanity 是第一个外部固定类型策略采用者:在 Python 3.14.8 设置之后,它准备 git-owner@dd4528b6393e7d00063067a080ca7241b48ce475 并提供内联可信审核配置策略。已经存在的基础提交会跳过传输。否则,其独占的签出功能可以实现锁回收,同时保留 30 秒的获取截止时间,每个引用最多尝试 3 次,并且仅在超时或普通 Git 124/137 重试之间保留 5 秒的取消感知退避。普通的exact-SHA失败或重试耗尽允许分支回退;所有权失败或取消则不会。每个配置独立选择确切的 SHA 或具有无限本地读取的现有远程分支,并且仅在配置和 Zizmor 路径重写成功后才发布环境路径。

QA Profile Evidence 是 git-owner@dd4528b6393e7d00063067a080ca7241b48ce475 的另一个固定终端采用者。每个使用 Git 的作业都会使用已建立的系统 Python 引导程序在以后的结帐之外为所有者做好准备。它的四个 validation/protocol 获取保留 120 秒的操作期限;它的六个可信harness和选定源引导程序获取没有保留操作期限。所有十个尝试都使用直线 --checkout-git 调用,因此所有权失败或取消会在下游签出、读回或发布之前停止。被叫工作流身份和选定源信任分类保持独立且不变。

Mantis 引用验证使用相同的固定所有者。共享的 mantis-validate-trusted-ref 操作拥有一个无限制的主提取,即使同时具有基线和候选引用。 Discord 烟雾验证拥有两个截止时间为 120 秒的获取站点:主站点,然后是需要时的确切发布分支。每次获取都有一次尝试,并且必须在信任检查或输出之前耗尽。验证者保留不同的信任政策和输出合约; Discord 发布分支不匹配永远不会落入 PR 查找中。

Mantis 安装人员和工作树准备工作也使用固定的所有者,在每次运行作业中检查harness后立即准备。 Discord 状态反应和线程附件通过 --git 120 保留其两个深度一 Crabbox 克隆,截止时间为 120 秒。 Slack桌面保留main的初始化、远程添加、一深一取、分离FETCH_HEAD检出;只有它的获取有 120 秒的截止时间。状态反应、线程附件、Slack 桌面和 Web UI 聊天证明中的所有六个工作树添加均使用harness结账中的 --checkout-git 0。本地初始化、远程添加、签出和工作树操作没有操作期限。在后续 Git 操作、Go/pnpm 构建、检查或输出之前,所有权失败或取消是终端。当前的 Mantis Git 调用没有使用 GNU timeout。

安全审查在这两个作业中都使用固定结帐操作的稀疏选择和自动无 blob 提取。解析器选择 scripts/github/security-review-event.mjs、scripts/github/guard-shared.mjs 和 scripts/lib/bounded-response.mjs。审核作业选择 scripts/github 下的 dependency-guard.mjs、guard-review.mjs、guard-shared.mjs、security-review-policy.mjs、security-review-rollout.mjs、security-review.mjs 和 security-sensitive-guard.mjs,加上 scripts/lib/bounded-response.mjs 和.github/security-review-policy.yml。它还选择 .github/actions/setup-security-review 下的 action.yml、package.json 和 package-lock.json。非圆锥模式排除不相关的产品文件和根清单。这两个作业都保留深度一的可信事件签出,没有显式引用或存储库覆盖和 persist-credentials: false。 PR 内容来自 GitHub API。每个作业都会重试一次失败的可信结帐,保留相同的稀疏选择和可信修订。恢复的第一次尝试不会使作业失败。安全审核作业最多允许 85 分钟进行五分钟的结帐尝试、三分钟的运行时设置和有限的 API 配额恢复。如果审阅作业签出或运行时设置失败,独立于签出的发布者会将计划的当前头标记为失败,而不是使其组合门处于待处理状态。它跳过封闭的 PR 和被取代的负责人,并且从不发布成功消息。

Docs Sync Publish Repo 仅签出 docs、scripts 和 .github/codex/prompts,以及锥模式稀疏签出包含的根文件。固定签出操作对此选择使用 blobless 获取:提交历史记录仍然可用,但不下载不相关的应用程序文件和历史文件内容。保留 fetch-depth: 0,因为过时源检查需要完整的祖先,以避免用较旧的快照替换较新发布的文档。这减少了源检查工作;它不会更改队列、完整的 MDX 验证或下游站点构建。

Docs Sync Publish Repo 在源和 ClawHub 签出后准备相同的固定所有者,并在 Node 设置之前使用系统 Python。它的内联类型策略拥有克隆和连接的发布链。克隆和两个获取站点均保留 120 秒的操作期限;克隆和发布保留五次尝试(2/4/6/8/10 秒退避),包括最后一次失败的尝试。只有普通的 Git 故障或 FetchTimeout 允许在验证清理后重试。咨询预提交获取可能会失败并安全地继续提交;发布失败首先尝试拥有的变基中止。变基、推送、本地读取和 config/add/commit 保持不受限制。 ClawHub HEAD 必须在同步脚本使用它之前通过所有者完成。清理不确定性、设置失败或取消在重试、中止、另一次删除或消耗之前是终止的。仅替换固定的发布路径,而不遵循其符号链接;独占发布操作回收新创建的锁,同时保留现有锁。队列并发、过时源检查和无更改成功保持不变。

文件代理在结账后立即准备同一个固定的所有者。在未更改的 shell GitHub/JQ 节奏块之前和之后,两个受信任的内联门策略拥有 Git;手动调度并取代该查询之前的 CI 退出。连接的提交策略拥有 diff、config、staging、commit、fetch、push 和 stale-main readback。 Gate 和 commit 每个保留 5 次 fetch --no-tags 尝试,截止时间为 120 秒,并且具有独占校验锁回收。门退避时间为 2/4/6/8 秒,仅在尝试之间;提交获取和推送失败保留 2/4/6/8/10 秒,包括最终失败。本地读取、仅限文档的执行生产者、config/add/commit 和推送仍然不受限制。仅输入普通 Git 故障或 FetchTimeout 允许在验证清理后现有的恢复路径;设置、普查、清理失败和取消在重试、回退、输出或下游工作之前是终止的。一小时节奏、REST .id 当前运行排除、cancelled/skipped 排除和基于审阅的排序保持不变。

生成的 PR 出版物在铸造代币之前准备相同的固定所有者。一项可信操作策略通过暂存、提交、overlap/invalidation 检查、租用推送、协调和身份验证清理来控制每一项 Git 操作。分支头查找和推送保留 60 秒的截止日期;基本获取保留 120 秒;本地 Git 保持不受限制。没有一般的 Git 重试或退避。只有现有的删除竞赛允许在观察到的非空头消失后进行一次新的基础重建和一次仅创建推送。类型化的普通 GitFailure 和 FetchTimeout 允许仅在验证清理后进行语义恢复;仅状态 125 或 143 无法识别所有者故障或取消。 Git 读取失败不能成为无重叠或合并树成功。清理不确定性或取消在另一个 Git/GH 命令、回退、输出消耗、摘要或身份验证清理成功之前停止。 GitHub CLI 命令保留其现有的 GNU 超时和协调策略。发布者仍然是 Control UI 语言环境、本机语言环境、CI 计时修改和成熟度发布的最终步骤。陈旧的生成器运行保留现有的拉取请求及其提交,禁用继承的自动合并,并推迟到新的运行(或在调用者需要时失败)。他们从不清空自动化分支来关闭拉取请求。当前的无更改运行仅保留未完成的工作;经过验证的后继者会恢复配置的精确头部压缩自动合并策略。 GitHub 没有头部条件禁用操作:并发头部移动在不覆盖后继者的情况下协调失败,可以通过重新运行其发布者来重新配置后继者。所需的检查和存储库保护仍然控制着合并。

本地语言环境的新鲜度遵循本地来源和库存、共享术语表和翻译助手、平台生成器和发布工具。 Control UI 目录和配置架构更改仍然是 Control UI 刷新的输入。共享翻译助手仅为 UI 命令加载 UI 目录和验证代码,因此 UI 提示更改不会丢弃当前本机输出。两个调用者都保留相同的发布者新鲜度和拥有的输出重叠检查。

成熟度记分卡在选定的参考结账之前立即准备不可变的所有者,从而在结账期间保留其运行者临时环境切换。其可信内联策略拥有完整的验证决策。主、发布分支和基于发布的提取以及所有本地检查在一次尝试中保持不受限制。唯一的 60 秒操作是 ls-remote --exit-code --heads:普通状态 0 选择分支,状态 2 保留默认分支,所有其他状态在清理后都会失败并进行查找诊断。暂停并不代表缺席,而是代表缺席。所有者失败和取消永远不会选择后备或发布输出。主祖先、发布标签和确切的发布分支头信任排序、浮动主冻结、发布祖先和排除路径差异检查以及发布哈希字节保持不变。

Linux 应用程序版本、macOS 版本和 NPM 占位符引导程序在选定源结帐之前准备相同的固定所有者。 Linux保留一个fetch --quiet origin main,其截止时间为120秒,然后在本地进行标签剥离和主祖先,无操作截止时间;普通祖先非零保留现有的主可达性拒绝,而生命周期失败或取消无法发布 tag_sha。 macOS 保留其无限制的 rev-parse HEAD、精确的强制公共分支引用规范、签出持久读取身份验证以及元数据检查器之前的一次 120 秒获取。 NPM Placeholder 在发布不可变目标 SHA 之前保留结账检查之前的非 Git workflow/target 身份拒绝、一次 120 秒的强制主获取以及两次无限制的祖先检查。没有添加重试或退避。 macOS 元数据检查器单独拥有的十分钟祖先子流程仍然处于此明确的工作流程(Git 采用)之外。

插件 ClawHub 发行版和插件 NPM 发行版还在选定或受信任的结账之前为所有者做好准备。 ClawHub 保留其 main/release 获取和可选的发布标签获取,每个都有 120 秒的截止日期; npm 保留其扩展稳定、main/release、预检回读和发布回读 120 秒提取。本地检查、引用枚举、祖先、签出和对象读取仍然不受限制。 ClawHub 在安全排空普通检查失败后保留本地到源的引用回退;已解决的提交仍然必须通过单独的 OIDC 身份和祖先检查。仅合并基础状态 1 前进到下一个信任源;其他祖先错误和失败的release-ref枚举都是最终的。所有者失败和取消始终是最终的,包括在裁判解决期间。确切的源 package.json 字节仅在获取和 git show 耗尽之后、散列或发布证据消耗之前写入。没有添加 Git 重试或退避,并且 npm 单独的 300 秒令牌引导发布截止日期保持不变。推送触发的插件范围发现和清单历史读取仍然由其 Node 调用者单独拥有,并且不会被此工作流程采用所声明。

要使用另一个工作流程中的独立操作,请将 openclaw/openclaw/.github/actions/git-owner@<full-40-character-commit-SHA> 固定到包含该操作的已审阅修订版本。从受信任的内联工作流程或同一受信任的操作包提供策略,而不是从选定的候选者提供策略。在 ci.yml 中,现有的捆绑协议和 CI- 路由矩阵任务在 Node 设置之前对单独固定的 .ci-harness 检出的操作进行冒烟测试,比较其输出和复制的字节,并在没有网络访问的情况下运行拥有的 git --version。其他工作流程的直接 Git 命令在采用之前仍不在此所有权范围内。

安全审查将其两次五分钟的 actions/checkout 尝试保存在不同的目录中。成功签出后,它将选定的受信任脚本和策略运行时复制到工作区根目录中。失败尝试目录中的锁定和后期写入无法更改重试的文件。两次尝试都保留了事件的可信默认分支修订版和稀疏文件选择。

相关内容

本页有帮助吗?