Linear CI Contract Integration 概述
本技能用于为 Linear 集成添加确定性的持续集成覆盖,同时让普通的拉取请求测试保持离线,并让生产环境的写入操作显式地受到审批门控。
前置条件
目标代码仓库、Linear 工作区、环境以及明确的责任人
当前的安全、隐私、合规、容量与变更控制要求
只有在需要进行有界的实时验证时,才使用已获批准的 Linear 凭据
工具使用纪律
使用 Read、Glob 和 Grep 检查代码、配置和证据。仅使用 WebFetch 获取当前的第一方 Linear 文档与包元数据。仅当已知目标文件且确有实现需求时,才使用 Write 或 Edit。绝不写入凭据、客户内容、未受限的环境输出或未脱敏的 GraphQL 变量。
当前契约
对于 CI 和计划任务自动化,Linear 建议在每次运行开始时请求一个客户端凭据令牌,而不是将访问令牌持久化为长期密钥。
客户端凭据令牌属于应用执行者(app-actor)令牌,有效期为 30 天,出现 401 后必须更换;请求不同的 scope 会撤销应用已有的 app-actor 令牌。
GraphQL 传输层成功并不代表操作成功;CI 断言必须检查响应的 errors 数组和 mutation 载荷。
认证
仅对由责任人控制的脚本使用个人 API 密钥;对用户委托的应用使用带 PKCE 的 OAuth;对已获批准的自动化使用已启用的客户端凭据授权。个人密钥使用 Authorization: <API_KEY>;OAuth 令牌使用 Authorization: Bearer <ACCESS_TOKEN>。凭据应存放在服务端已获批准的密钥管理器中。
将应用审批、团队访问、scope 变更、凭据创建、轮换、撤销以及生产访问视为需责任人批准的操作。
操作步骤
盘点现有的 CI、测试替身、密钥提供方,以及任何与 Linear 相关的分支或拉取请求约定。
让拉取请求测试保持离线,使用已录制、已脱敏的 GraphQL fixture 与 schema 层面的断言。
将任何实时读探针放在单独获批的受保护任务中;每次运行获取最窄范围的客户端凭据令牌,且绝不回显该令牌。
将实时变更置于显式的环境审批与由集成方持有的幂等键之后。
断言 HTTP 状态、GraphQL errors、预期的载荷字段以及速率限制头信息;仅保留脱敏后的回执。
记录谁可以轮换 OAuth 客户端密钥、禁用该任务以及清理测试产物。
审批边界
在未获得责任人明确批准的情况下,不得创建、泄露、轮换或撤销凭据;不得授权 OAuth 应用;不得更改 scope 或团队访问;不得创建、变更、归档或删除工作区数据;不得配置或重新启用 webhook;不得导入或导出数据;不得更改角色、SCIM 或审计流;不得传输诊断信息;不得更改付费权益;不得执行其他生产变更。除非被要求进行实现,否则诊断应保持只读。
输出
返回工作区与团队范围、不含凭据值的认证模式、所检查的文件与契约、精确的操作名称、所收集的证据、验证结果、已脱敏的敏感字段、剩余风险、责任人、审批状态,以及回滚或下一步操作。
错误处理
情形与响应:fixture/schema 漂移时,从已批准且脱敏的响应刷新并审查语义变化;受保护任务出现 401 时,丢弃令牌、核实应用访问权限并获取新的按次运行令牌;出现 GraphQL errors 时,即使 HTTP 为 200 也判定任务失败,报告 code 和 path 但不含敏感变量;mutation 可能重复时,停止并在重试前补充幂等或对账契约。
示例
使用一份简洁的交接,使范围、mutation 权限与验证证据可被审核。
输入:
mode=contract-test; live-probe=read-only; mutation-job=approval-gated
预期交接:
offline=pass; live-auth=separate; graphql-errors=checked; secrets=redacted
资源
技能专属官方文档
Linear 开发者文档索引
Linear GraphQL API