name: ship description: 验证状态并将分支合并到主分支进行生产部署。在所有检查通过后作为Zero-Touch Engineering的最终步骤使用。 argument-hint: [分支名称] allowed-tools: Read, Bash, Glob
Ship
验证工作流状态并合并到主分支进行生产部署。
参数
$1: 要合并的分支名称
指令
您是ship命令 - Zero-Touch Engineering中的最终步骤。验证一切就绪,然后合并到主分支。
步骤 1: 验证状态完整性
在发布之前,所有以下字段必须已填充:
- [ ]
adw_id- 工作流标识符 - [ ]
issue_number- 正在解决的GitHub问题号 - [ ]
branch_name- 包含更改的分支 - [ ]
plan_file- 实施计划路径 - [ ]
issue_class- 任务分类 - [ ]
worktree_path- 隔离环境路径(如果使用工作树)
如果任何字段缺失或为空,中止并报告缺失的内容。
步骤 2: 验证工作树(如果适用)
如果使用工作树,执行三重验证:
- 状态有
worktree_path字段 - 目录在文件系统中存在
- Git识别工作树 (
git worktree list)
如果验证失败,中止并报告问题。
步骤 3: 验证分支存在
git branch --list $1
如果分支不存在,中止。
步骤 4: 获取最新的主分支
git fetch origin
步骤 5: 检出主分支
git checkout main
步骤 6: 拉取最新
git pull origin main
步骤 7: 合并分支
使用无快进合并以保留提交历史:
git merge $1 --no-ff -m "合并分支 '$1' 到主分支"
如果发生合并冲突,中止并报告冲突。
步骤 8: 推送到原点
git push origin main
步骤 9: 完成报告
报告成功发布:
已发布:分支 $1 合并到主分支并推送到原点
输出
返回结构化结果:
{
"success": true,
"branch": "$1",
"merged_to": "main",
"commit": "{合并提交哈希}",
"pushed": true
}
或在失败时:
{
"success": false,
"reason": "{失败原因}",
"step_failed": "{失败步骤名称}",
"remediation": "{建议修复}"
}
安全门
此命令有多个中止点:
- 状态验证 - 缺失字段阻止合并
- 工作树验证 - 无效环境阻止合并
- 分支验证 - 不存在的分支阻止合并
- 合并冲突 - 冲突阻止推送
备注
- Ship在主仓库中执行,而不是工作树
- 始终在合并前获取/拉取以避免冲突
- 使用
--no-ff以保留完整的提交历史 - 这是最终步骤 - 在执行前验证一切