自动化项目发布工具 - 简化从本地到GitHub的完整流程
Project description
RepoFlow 🚀
自动化项目发布工具 - 一键发布到 GitHub + 自动发布到 PyPI/NPM
✨ 核心功能
- 🎨 可视化 GUI - 极简界面,无需命令行
- 🔐 安全检查 - 自动扫描敏感信息(API Key、密码等)
- 📦 自动发布 - 支持 PyPI、NPM、Docker Hub
- 🏷️ 自动 Tag - 自动创建版本 Tag 触发 GitHub Actions
- 🔄 智能检测 - 自动识别项目类型和版本号
🚀 快速开始
方式 1:运行打包的 EXE(推荐,无需 Python)
下载并运行:
1. 下载 RepoFlow.exe
2. 双击运行
3. 完成!
方式 2:从源码运行(开发者)
安装
git clone https://github.com/BACH-AI-Tools/RepoFlow.git
cd RepoFlow
pip install -r requirements.txt
启动 GUI
Windows:
.\run-repoflow-gui.bat
Linux/Mac:
./run-repoflow-gui.sh
打包成 EXE
# 方法 1: 运行打包脚本(推荐)
.\build-exe.bat
# 方法 2: 直接运行
python build_exe.py
# 生成的文件在
dist\RepoFlow.exe
3. 配置 GitHub Token
第一次使用时:
- 点击 GUI 中的 "🔗 获取新 Token" 按钮
- 在打开的页面点击 "Generate token"
- 复制 token 并粘贴到 GUI 输入框
- 点击 "💾 保存"
4. 发布项目
- 选择项目文件夹 - 点击"浏览"选择你的项目
- 自动检测 - GUI 会自动检测项目类型和版本号
- 配置选项:
- ✅ 默认勾选 "立即发布到 PyPI/NPM"
- 📌 版本号自动填充(可修改)
- 点击发布 - 一键完成!
📦 包命名规范
RepoFlow 会自动为你的包添加统一前缀,避免命名冲突:
| 平台 | 包名格式 | 示例 |
|---|---|---|
| PyPI | bachai-{项目名} |
bachai-data-analysis-mcp |
| NPM | @bachai/{项目名} |
@bachai/file-search-mcp |
安装示例:
# Python
pip install bachai-your-project
# Node.js
npm install @bachai/your-project
🔐 组织 Secrets 配置(一次性)
在 GitHub 组织设置中配置以下 Secrets(根据项目类型):
访问:https://github.com/organizations/你的组织/settings/secrets/actions
| 项目类型 | 需要的 Secrets |
|---|---|
| Python | PYPI_TOKEN |
| Node.js | NPM_TOKEN |
| Docker | DOCKERHUB_USERNAME + DOCKERHUB_TOKEN |
配置一次,所有仓库通用! ✨
如何获取 Token?
- PyPI Token: https://pypi.org/manage/account/token/
- NPM Token: https://www.npmjs.com/settings/你的用户名/tokens
- DockerHub Token: https://hub.docker.com/settings/security
🎯 工作流程
选择项目文件夹
↓
GUI 自动检测项目类型和版本号
↓
勾选"立即发布"(默认已勾选)
↓
点击"一键发布"
↓
✅ 扫描敏感信息
✅ 创建 GitHub 仓库
✅ 生成 CI/CD Pipeline
✅ 推送代码到 GitHub
✅ 自动创建并推送 Tag (v{版本号})
✅ 触发 GitHub Actions
✅ 自动发布到 PyPI/NPM
↓
完成!🎉
📋 安全检查
RepoFlow 会自动检查以下内容:
| 检查项 | 说明 | 不通过时 |
|---|---|---|
| ✅ README.md | 必须包含 README | 拒绝发布 |
| 🔍 敏感信息 | API Key、密码、Token 等 | 拒绝发布 |
| 📦 包名冲突 | 自动添加前缀 | 自动处理 |
🛠️ 命令行使用(高级)
基础命令
# 配置
python repoflow.py config
# 自动检测并发布
python repoflow.py init --repo 仓库名 --pipeline auto
# 指定 Pipeline 发布
python repoflow.py init --repo 仓库名 --pipeline pypi
示例
# 发布 Python 项目到 PyPI
python repoflow.py init --repo my-python-package --pipeline pypi
# 发布 Node.js 项目到 NPM
python repoflow.py init --repo my-node-package --pipeline npm
# 发布 Docker 镜像
python repoflow.py init --repo my-app --pipeline docker
更多命令:
python repoflow.py --help
📁 项目结构
RepoFlow/
├── repoflow_gui.py # GUI 主程序
├── repoflow.py # CLI 主程序
├── src/ # 核心模块
│ ├── github_manager.py # GitHub API
│ ├── git_manager.py # Git 操作
│ ├── pipeline_generator.py # CI/CD 生成
│ ├── secret_scanner.py # 敏感信息扫描
│ └── ...
├── requirements.txt # Python 依赖
└── README.md # 本文档
🎓 使用技巧
1. 版本号管理
遵循语义化版本规范:
1.0.0- 首次发布1.0.1- Bug 修复1.1.0- 新功能(兼容)2.0.0- 重大更新(不兼容)
2. Tag 已存在怎么办?
如果 Tag 已存在,GUI 会提示你:
方案 1:修改版本号(推荐)
1.0.0 → 1.0.1
方案 2:删除旧 Tag
git tag -d v1.0.0
git push origin :refs/tags/v1.0.0
3. 发布失败排查
- 检查 Secrets - 确保在组织中配置了正确的 Token
- 检查包名 - PyPI/NPM 上包名必须唯一
- 查看 Actions - 访问 GitHub Actions 查看详细日志
❓ 常见问题
Q: 推送时弹出多次 Git 认证窗口?
A: 这是正常的,一次认证用于推送代码,一次用于推送 Tag。
Q: 如何更新已发布的包?
A: 修改版本号,然后重新发布即可:
1.0.0 → 1.0.1
Q: 支持哪些项目类型?
A:
- ✅ Python (PyPI)
- ✅ Node.js (NPM)
- ✅ Docker
- ✅ C# / .NET (NuGet) - 开发中
Q: 可以发布到私有仓库吗?
A: 可以!勾选"创建为私有仓库"选项即可。
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可证
MIT License - 详见 LICENSE 文件
🔗 相关链接
📦 打包成可执行文件
快速打包
Windows:
# 双击运行
build-exe.bat
# 或使用 PowerShell
.\build-exe.ps1
macOS/Linux:
# 运行构建脚本
./build-exe.sh
生成的文件:
- Windows:
dist/RepoFlow.exe(~20 MB) - macOS:
dist/RepoFlow(~25 MB) - Linux:
dist/RepoFlow(~25 MB)
特点:
- ✅ 独立可执行文件
- ✅ 无需 Python 环境
- ✅ 包含所有依赖
自动构建(GitHub Actions)
每次推送 tag 时自动构建三个平台的版本:
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
GitHub Actions 会自动:
- ✅ 构建 Windows/macOS/Linux 版本
- ✅ 创建 GitHub Release
- ✅ 上传所有平台的可执行文件
下载地址:
https://github.com/BACH-AI-Tools/RepoFlow/releases
分发给用户
只需要把对应平台的文件给用户:
Windows:
- 发送
RepoFlow.exe - 用户双击运行
macOS/Linux:
- 发送
RepoFlow - 用户运行:
chmod +x RepoFlow ./RepoFlow
就这么简单! 🎉
Made with ❤️ by BACH Studio
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repoflow-1.0.0.tar.gz.
File metadata
- Download URL: repoflow-1.0.0.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ee7710c6a0c83f071c67d4c21d048d5fd783c44219bfb00be5a1ccff4a0e782
|
|
| MD5 |
c5397ef537308a28dc5baf705d896d03
|
|
| BLAKE2b-256 |
e5ea4dbac34873825cfb0dcb53462990299fc72f8e5a0b60c5af3d50d87d3263
|
File details
Details for the file repoflow-1.0.0-py3-none-any.whl.
File metadata
- Download URL: repoflow-1.0.0-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a30bc211a5da9f0e218276ed011fc7beb52bdf87a775ef2da3ad986d5daa280
|
|
| MD5 |
10cff543159cc56e76b7e8263537cdb9
|
|
| BLAKE2b-256 |
58a96f3657ae697888fbb9d8943b6d3f3c4ef5571de568cd701719f3eb5c79f9
|