核心用法
deploy-public 是一个专用于私有仓库向公开仓库同步的自动化脚本工具。用户通过 CLI 执行 bash scripts/deploy-public.sh /path/to/private-repo org/public-repo,工具会自动完成以下操作:
1. 克隆与隔离:将目标公开仓库克隆至临时目录
2. 智能过滤复制:复制私有仓库全部内容,自动排除 ai/ 目录(可能包含敏感AI提示词或内部文档)和 .git/ 目录
3. 自动化PR流程:创建新分支、提交变更、推送至远程、发起Pull Request
4. 强制合并策略:使用常规合并(regular merge),禁用 squash 以保持完整提交历史
5. Release 同步:从私有仓库的 GitHub Releases 拉取发布说明,同步至公开仓库对应版本
依赖要求
- git、gh (GitHub CLI)、bash 环境
- 需预先创建公开仓库,且命名遵循
*-private对应规则 - 必须先于
wip-release创建 Release 后执行,否则公开 Release 将为空
显著优点
- 流程标准化:将开源发布工作流封装为单一命令,降低人工操作失误
- 敏感信息隔离:通过
ai/目录硬编码排除机制,防止内部AI提示词泄露 - Release 一致性:自动同步发布说明,避免手动复制粘贴的遗漏
- 历史完整性:强制 regular merge 保留完整提交记录,便于追溯
潜在局限
- 硬编码路径依赖:
ai/排除规则为固定实现,无法通过配置扩展其他敏感路径 - 单仓库绑定:每次调用仅处理一对公私仓库,大规模多仓库场景需外部编排
- GitHub 生态锁定:依赖 gh CLI 和 GitHub Releases,不支持 GitLab、Gitee 等平台
- 无冲突处理机制:若公开仓库存在未预期变更,可能引发合并冲突导致失败
适合人群
- 采用 private development + public release 模式的开源维护者
- 需要在发布前审核代码、但希望自动化后续同步步骤的 DevOps 工程师
- 使用 GitHub 作为主力平台,且已建立规范 Release 流程的技术团队
常规风险
| 风险点 | 说明 |
|--------|------|
| **敏感信息泄露** | 若开发者误将机密文件置于 `ai/` 外,同步后将公开暴露;建议配合 pre-push hook 扫描 |
| **Release 顺序依赖** | 未执行 `wip-release` 直接运行会导致公开 Release 空笔记,需人工补全 |
| **权限配置** | gh CLI 需具备目标仓库的 write 权限及 PR 合并权限,令牌泄露风险 |
| **临时目录残留** | 异常中断可能遗留临时克隆目录,需定期清理 `/tmp` 或对应路径 |
> 安全提示:该技能报告为系统占位生成,未执行实际安全扫描,生产环境使用前建议进行 SAST 审计和 secrets 扫描。