@ archigravity/ 关卡
ArchiGravity部署大门,在你的CI.
您的Repo宣布它拥有的那部分系统。 每一次拉动请求,都会发出声明 回答一个问题: 此更改是否断开一些 下游的公关里没人能看见吗?
它本身没有计算出来。 它发布您的声明, 使判决服务器返回 以代码退出您的分支保护 .
用这个
# .github/workflows/archigravity-gate.yml — blocks the merge
name: ArchiGravity gate
on: pull_request
permissions:
contents: read
pull-requests: write
issues: write
jobs:
gate:
name: Merge gate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx --yes @archigravity/gate@<version> check
env:
AG_GATE_KEY: ${{ secrets.AG_GATE_CHECK_KEY }}
AG_SYSTEM_ID: ${{ vars.AG_SYSTEM_ID }}
AG_FRAGMENT_KEY: ${{ vars.AG_FRAGMENT_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# .github/workflows/archigravity-ratify.yml — records what actually landed
name: ArchiGravity ratify
on:
push:
branches: [main]
permissions:
contents: read
id-token: write
jobs:
ratify:
name: Push ratify
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx --yes @archigravity/gate@<version> ratify
env:
AG_GATE_KEY: ${{ secrets.AG_GATE_RATIFY_KEY }}
AG_SYSTEM_ID: ${{ vars.AG_SYSTEM_ID }}
AG_FRAGMENT_KEY: ${{ vars.AG_FRAGMENT_KEY }}
两把钥匙,那就重要了. 薄荷a gate:check 用于拉动请求和 a
单独一个 gate:ratify 为推力工作。 批准是记录装运货物的电话;a
拉出请求从来不需要它,一个密钥如果从不宽则最容易保持窄.
机密设定为每个STEP,而不是文件的顶部. 工作流程级别 env 手握每个秘密
包括: checkout 和任何第三方行动 你以后添加。 一样
原因 permissions 坐在每份工作上而不是在文件中:拉出请求的工作是唯一的工作
能够写评论的 批准工作是唯一能铸造身份标志的
可以做别人的工作.
这也是为什么 check 携带 if: github.event_name == 'pull_request'有话要说
在合并之后, 判决评论只存在于拉力请求上
将给予无法使用它们的工作评论权限。 合并是 ratify报告.
然后标出 合并闸门 作为树枝保护的必要检查。 一个红色的判断现在挡住 合并而不是与之争论.
两个文件而不是一个有两个任务, 目的: 一个文件意味着每个通道都被过滤 gitHub 将过滤任务列表为 跳过 所以每个拉动请求都会携带 一个永远跳过检查, 第一件事是,谁被跳过,是否是 糟透了,我还没说完呢 分开,每起火只属于它的地方 没有什么可解释的.
它们不能互换. 合并闸门 就是那个挡住的. 推动批准 保留模型 老实说实际部署的是什么 把它放出去 大门慢慢地开始检查 系统已经不复存在.
将准确的版本固定下来——替换 <version> 与该页的顶部。 我们宁愿
在你审查过的一条线上升级 而不是有一个新的释放 到达一个不事先通知的工作
钥匙connect 财务报告和审定财务报表 init 为您写出指针, 总是生成它的版本 。 )
设置它
npx --yes @archigravity/gate connect
它要求一个 设置符牌 ——在你的系统页面上做成的,短暂的,也是你唯一的价值
永远复制。 然后它显示了一个计划,在你的"是": 薄荷两把门钥匙, 把它们直出
通过您自己输入 GitHub gh (他们从来没有出现在屏幕上),写工作流程,钩子和
并告诉你还有一件事可以点击。 系统哪个部分的回波
成为已编号的菜单,而不是错误键入的字段.
没有 gh 在机器上吗? connect 在创建任何东西和要约之前停止 --print-secrets, (中文(简体) ),
它印了一次钥匙让你粘贴自己.
其下方的手动路径仍然可用 :
npx --yes @archigravity/gate init \
--system-id <your-system-id> \
--fragment-key <this repo's name in the system>
将上方的工作流程,前推钩,并作标记. 它打印出秘密和变量 设定并永远不设定 —— 它没有业务持有您的证书。 随时再运行一次,它 更改任何已经正确的文件, 它不会覆盖您撰写的文件( 它告诉你 ) 以何为补充)。 一旦标记存在,你就可以放下两面旗帜.
两个识别符都来自您的系统页面, 也没有被猜测. 部分名称
(单位:千美元)--fragment-key特别是,系统已经知道这个存放处是——而不是——
文件夹名称, 通常不同 。 错误的人是看不见的,而不是大声的:一切都同意自己和自己
门读这首歌是第二首 未知的.
那么,当事情不起作用时:
npx --yes @archigravity/gate doctor
门外的出站码2包括"没有钥匙","错误钥匙","没有申报","没有窃听"和"我们是"
无法到达". doctor 说出什么,永远不打印一个秘密的价值.
图标
check | 写一篇粘稠的PR评论 |
ratify | 合并到主机后运行:记录实际降落的物体。 配置后, 管道就不会失效 |
pre-push | 新鲜度检查, 用于一个出击前的钩子 |
init | 接通这回波:工作流程、钩子、标记 |
doctor | 检查线路和名称 缺少什么 |
login | 在您的计算机上: 用 GitHub 签名一次 —— 您的推力会被检查为您的 |
whoami | 此计算机的签名人 |
logout | 在此签名并撤销服务器上的密钥 |
login 显示要输入的代码 : github.com/login/device 并保持您的登录
~/.config/archigravity/credentials.json只有你才能读 它保存的是你的私人钥匙 它让你
特工和大门在你的工作空间里为您服务90天——阅读和提议修改。 你看见了,而且可以
取消它,在设置 ~代理访问.
配置
在整个环境中——永远不要争论,因为争论出现在 ps 输出和 CI
木头.
AG_GATE_KEY | 这个重播的门钥匙。 一个秘密 |
AG_SYSTEM_ID | 此 repo 属于哪个系统 |
AG_FRAGMENT_KEY | 该系统的哪一部分 |
AG_GATE_URL | 如果您不在主机上的话 |
AG_FRAGMENT_PATH | 默认为 .archigravity/fragment.tdl |
退出代码
它们对于分支保护的意义不同,因此它们从未被合并.
0 | 变化是明确的 |
1 | 红色 ——这个变化打破了下游的东西. 公关评论说: |
2 | 无法运行闸门: 密钥、 配置或服务无法到达 |
A 类 2 是我们的问题 而不是对你建筑的判断 它阻止合并,因为
当波浪无法检查时会改变的门不是门.
留下什么给你的回扣
没有分析运行在这里, 没有遥测,自动更新或运行时间 依赖船与之.
check 财务报告和审定财务报表 ratify 发送主机门一件事: 这repo的部分 - 声明你
写作并可以在自己的repo中读取。 你的消息来源从不读取,从不被他们上传.
如果你在JS的回放中安装这个包 已经装了电线 它会为你播下预推钩.
它只是在那里:不是在CI里,不是在没有标记的回放里, 从来没有过一个你写的钩子.
设定 AG_GATE_SKIP_POSTINSTALL=1 把它完全关掉.
可选 pre-push 钩子不同,安装前值得阅读. 当一推
打开密码,它会把版本的食谱交给已经打开的CLI代理商
您的机器( e)claude 或者说 codex),而代理读取你的本地diff, 对于任何
其他任务你给它。 那是你的经纪人 在你的机器上 根据你现有的信任决定
这里没有寄出去的 如果您不想要, 请不要安装钩子 : check 这是
权力和它是完整的没有它.
签字人:login),钩子还检查了您在每次被逼犯时的角色 并发送这个repo的部分——
声明在 .archigravity/fragment.tdl 在那个承诺中,永远不要你的消息来源——所以拉出请求可以说"检查
当地由你。" 它从不停止一推:签出,下线或其他什么,它印出一行并进行推.
所需资源
节点20+,没有别的. check 财务报告和审定财务报表 ratify 他们叫门,使门
裁决并设定出局代码,在跑者身上没有外壳和其他工具.
唯一的例外是可选的预推钩,它是一个贝壳脚本——它读取了你的git
历史和把 diff 交给当地特工,所以它想要 bash 在你的机器上。 这是可选的
设计 : check 它是权威的,它是完整的没有它.