UNPKG

long-git-cli

Version:

A CLI tool for Git tag management.

238 lines (186 loc) 6.33 kB
# Long CLI 一个支持 Bitbucket/GitHub/GitLab 的 Git tag/commit 自动化命令行工具,基于 TypeScript,结构高度可扩展。 ## 安装 ```bash npm install -g long-git-cli ``` 或本地开发: ```bash npm install npm run build npm link ``` ## 支持命令 ### 自动打 tag ```bash long tag ``` - 拉取最新 tag,自动递增(格式:`test-v00.00.0000`- 检查分支(禁止在 master/main/release 上打 tag) - 自动推送到远程仓库(Bitbucket/GitHub/GitLab 均支持) - 友好提示 tag 结果 ### 规范化 commit 并 push ```bash long commit ``` - 自动 git add . - 打印所有将要提交的文件,需用户确认 - 交互式收集 commit 信息(类型、范围、说明、描述、脚注,参考 Angular/commitizen 规范) - 生成规范化 commit message - commit 后再次确认,自动 push - 支持 Bitbucket/GitHub/GitLab,push 后友好提示 ### 快速部署(frontend-msg-admin 专用) ```bash long deploy ``` - 专门为 `frontend-msg-admin` 项目定制的快速部署工具 - 支持 4 个测试环境:test-01, test-02, test-03, test-04 - 自动创建 tag 并触发构建和部署 - 实时监听构建和部署状态 - 支持在仓库目录内外执行 **使用方式**```bash # 交互式选择环境 long deploy # 直接指定环境(1-4) long deploy -e 1 long deploy --env 2 # 测试 Bitbucket 和 Jenkins 连接 long deploy --test long deploy -t ``` **首次使用**1. 运行 `long config` 打开 Web UI 配置界面 2. 配置 Bitbucket API Token 和 Jenkins API Token 3. 配置完成后运行 `long deploy --test` 测试连接 4. 测试通过后即可使用 `long deploy` 命令部署 **硬编码配置**- **Bitbucket**: `https://bitbucket.org/vantagefxcrm/frontend-msg-admin` - **Jenkins**: `https://jenkins.app-alpha.com` - **环境**: test-01, test-02, test-03, test-04 **执行流程**1. 检查 API Token 配置 2. 选择部署环境(1-4) 3. 验证仓库路径 - 在目标仓库目录:使用本地 Git 创建 tag - 不在目标仓库目录:通过 API 创建 tag 4. 监听构建状态(AWS CodeBuild) 5. 触发 Jenkins 部署 6. 监听部署状态 7. 显示部署结果 ### 配置管理 ```bash long config ``` - 打开 Web UI 配置界面 - 配置 Bitbucket 和 Jenkins API Token - 配置项目和环境信息(用于 Web UI) ## 交互流程示例 #### long tag ``` 🚀 开始自动打 tag... 📥 拉取最新的远程信息... 📋 当前最新 tag: test-v00.00.0001 🆕 新 tag: test-v00.00.0002 🏷️ 创建 tag: test-v00.00.0002 ✅ Tag test-v00.00.0002 创建成功 📤 推送 tag 到远程仓库... ✅ Tag 推送成功 🔗 你可以在 Bitbucket 上查看新创建的 tag 💡 提示:在 Bitbucket 中,你可以在 "Tags" 页面查看所有 tag ✅ Tag 创建并推送成功! ``` #### long commit ``` 📝 本次将要提交的文件: src/commands/commit.ts 请确认以上文件是否全部需要提交? (Y/n) 请选择提交类型(必选): feat 影响范围(可选,如模块名,直接回车跳过):core 简短说明(必填,建议50字以内):支持交互式 commit 详细描述(可选,直接回车跳过): 脚注(如 BREAKING CHANGE/关联 issue,可选,直接回车跳过): 🚩 即将提交以下内容: 提交文件: src/commands/commit.ts 提交注释: feat(core): 支持交互式 commit 请确认是否提交并 push? (Y/n) ✅ commit 成功! 🚀 push 成功! 🔗 你可以在 Bitbucket 上查看新创建的内容 💡 提示:在 Bitbucket 中,你可以在 "Commits" 页面查看 ``` #### long deploy ``` Frontend Msg Admin 部署工具 ? 选择部署环境: 1. test-01 (app-test-hy-service/frontend-msg-admin) 部署到: test-01 Jenkins Job: app-test-hy-service/frontend-msg-admin [1/4] 创建 Tag (本地 Git) 拉取最新 tag... 当前最新: test-v00.00.0262 新 tag: test-v00.00.0263 推送到 Bitbucket... Tag 已创建: test-v00.00.0263 [2/4] 监听构建状态 获取 commit hash: abc123d 等待 build status 出现... AWS CodeBuild us-east-1 (frontend-msg-admin-ci): INPROGRESS (0分15秒) AWS CodeBuild us-east-1 (frontend-msg-admin-ci): SUCCESSFUL (1分45秒) 构建完成 [3/4] 触发 Jenkins 部署 触发 Jenkins 部署: app-test-hy-service/frontend-msg-admin 构建已加入队列: 12345 等待构建开始... 构建已开始: #678 [4/4] 监听部署状态 构建状态: BUILDING (0分10秒) 构建状态: SUCCESS (0分35秒) 部署成功! Tag: test-v00.00.0263 Jenkins 构建: #678 - SUCCESS 构建 URL: https://jenkins.example.com/job/app-test-hy-service/job/frontend-msg-admin/678/ ``` ## 扩展性说明 - 所有 git 操作、tag 处理、交互、常量、类型均已抽取为公共模块 - 新增命令/支持更多平台/自定义交互,只需在 utils/constants/types 里维护 - 代码高度解耦,便于单元测试和团队协作 ## 配置文件 配置文件位置:`~/.long-cli/config.json` 该文件存储: - Bitbucket API Token(加密) - Jenkins API Token(加密) - 项目和环境配置(用于 Web UI) **注意**- `long deploy` 命令只使用 API Token 配置,项目和环境配置是硬编码的 - `long config` 打开的 Web UI 可以配置多项目多环境,用于更灵活的部署场景 ## 故障排除 ### long deploy 提示"未找到配置" **解决方法**1. 运行 `long config` 打开 Web UI 2. 配置 Bitbucket API Token 和 Jenkins API Token 3. 保存配置后重新运行 `long deploy` ### long deploy 提示"Bitbucket 配置不完整" **解决方法**1. 运行 `long config` 打开 Web UI 2. 检查 Bitbucket 配置是否完整(用户名和 API Token) 3. 重新保存配置 ### long deploy 提示"未找到 Jenkins (app) 配置" **解决方法**1. 运行 `long config` 打开 Web UI 2. 添加 Jenkins 实例,类型选择 "app" 3. 填写 Jenkins URL、用户名和 API Token 4. 保存配置 ### 如何重新配置 如果需要重新配置 API Token: 1. 运行 `long config` 打开 Web UI 2. 在配置界面重新输入新的 Token 3. 保存配置 或者直接删除配置文件: ```bash rm ~/.long-cli/config.json ``` 然后重新运行 `long config` 进行配置。 ## 贡献 欢迎提 issue 或 PR,或根据自身需求 fork 扩展!