✨个人主页:编程的一拳超人
⛺️ 欢迎关注:👍点赞 📢留言 😍收藏
于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。
- GitHub 双仓库静态部署完整配置手册(适配你的项目)
- 一、前期准备
- 二、步骤1:生成个人访问令牌(PAT)
- 三、步骤2:私有源码仓库配置密钥
- 四、步骤3:私有仓库编写自动化工作流
- 4.1 创建文件
- 4.2 完整配置代码
- 4.3 提交文件到仓库
- 五、步骤4:前端项目部署适配(必做,否则白屏/404)
- 5.1 Vite 基础路径配置
- 5.2 SPA 路由刷新 404 修复
- 5.3 关于 .nojekyll 文件
- 六、步骤5:公开部署仓库开启 GitHub Pages
- 七、步骤6:首次触发部署与结果验证
- 7.1 触发构建
- 7.2 查看构建状态
- 7.3 验证站点访问
- 八、步骤7:部署仓库安全加固(推荐)
- 九、日常开发流程
- 十、全场景问题排查手册
- 1. 工作流执行失败,报 403 权限错误
- 2. 页面打开空白,控制台报 css/js 404
- 3. 页面刷新后出现 404
- 4. 公开仓库看不到 gh-pages 分支
- 5. 样式、图片资源加载不出来
GitHub 双仓库静态部署完整配置手册(适配你的项目)
本手册针对你的两个仓库量身定制,全程按步骤操作即可实现「源码私有、站点公开」的自动化部署。
- 私有源码仓库:
https://github.com/qiekuo/HongyunX-Agent-Web- 作用:存放完整前端项目源码,日常开发提交,源码不对外公开
- 公开部署仓库:
https://github.com/qiekuo/HongyunX-Agent-Web-Deploy- 作用:仅存放编译后的 dist 静态文件,开启 GitHub Pages 对外提供访问
- 最终访问地址:
https://qiekuo.github.io/HongyunX-Agent-Web-Deploy/ - 工作原理:向私有仓库推送代码 → GitHub 云端自动构建打包 → 将产物自动推送到公开仓库的 gh-pages 分支 → GitHub Pages 读取该分支对外展示
一、前期准备
- 确认两个仓库已创建:
- 私有仓库
HongyunX-Agent-Web:已上传你的前端项目源码,包含package.json、vite.config.ts等工程文件 - 公开仓库
HongyunX-Agent-Web-Deploy:初始空仓库状态即可,无需手动上传任何代码
- 私有仓库
- 本地前端项目可正常执行
npm install和npm run build,能生成dist目录 - 你拥有该 GitHub 账号的完整操作权限
二、步骤1:生成个人访问令牌(PAT)
该令牌用于让私有仓库的自动化流程,获得向公开部署仓库推送代码的权限,全程只需要生成一次。
- 登录 GitHub,点击右上角头像 → 选择Settings(设置)
- 左侧菜单拉到最底部,找到Developer settings(开发者设置)并点击
- 左侧菜单选择Personal access tokens→ 点击下级的Tokens (classic)
- 点击右上角Generate new token→ 选择Generate new token (classic)
- 按以下参数填写:
- Note(备注):填写
HongyunX-Deploy-Token(方便后续识别用途) - Expiration(有效期):建议选择
No expiration(永久有效;若注重安全可设置为 90 天,到期后重新生成) - Select scopes(权限范围):只勾选最上方的
repo大类(勾选后会自动选中 repo 下的所有子项)
- Note(备注):填写
- 拉到页面最底部,点击Generate token生成令牌
- ⚠️关键操作:生成后立刻复制完整的令牌字符串(以
ghp_开头),该页面刷新后将不再显示,丢失只能重新生成
三、步骤2:私有源码仓库配置密钥
将上一步生成的令牌存入私有仓库的加密密钥中,避免明文泄露。
- 打开你的私有源码仓库:
https://github.com/qiekuo/HongyunX-Agent-Web - 顶部菜单点击Settings(设置)
- 左侧菜单找到Secrets and variables→ 点击下级的Actions
- 点击右侧New repository secret(新建仓库密钥)
- 填写参数:
- Name(密钥名称):严格填写
DEPLOY_TOKEN(大小写必须完全一致,后续工作流会引用这个名称) - Secret(密钥值):粘贴上一步复制的完整 PAT 令牌字符串
- Name(密钥名称):严格填写
- 点击Add secret保存,保存后密钥值无法再次查看,只会显示名称
四、步骤3:私有仓库编写自动化工作流
在你的本地前端项目中创建工作流配置文件,提交后即可实现 push 代码自动部署。
4.1 创建文件
在项目根目录下,按层级新建文件夹和文件:
你的项目根目录 └── .github └── workflows └── deploy-to-public.yml注意:
.github是点开头的隐藏文件夹,名称必须完全一致,不能少了开头的点。
4.2 完整配置代码
将以下内容完整复制到deploy-to-public.yml文件中,无需修改任何内容,已适配你的仓库信息:
name:自动构建并部署到公开仓库# 触发条件:向 main 分支推送代码时自动执行on:push:branches:[main]# 工作流默认权限:仅读取源码permissions:contents:readjobs:build-deploy:runs-on:ubuntu-lateststeps:# 步骤1:拉取私有仓库的源代码-name:检出项目源码uses:actions/checkout@v4# 步骤2:配置 Node.js 运行环境-name:配置 Node.js 环境uses:actions/setup-node@v4with:node-version:22cache:npm# 开启依赖缓存,加快后续构建速度# 步骤3:安装项目依赖-name:安装项目依赖run:npm ci# 比 npm install 更严格,确保依赖版本与 lock 文件一致# 步骤4:执行生产环境构建打包-name:构建生产环境产物run:npm run build# 生成 dist 目录# 步骤5:将 dist 目录推送到公开部署仓库的 gh-pages 分支-name:推送静态产物到部署仓库uses:peaceiris/actions-gh-pages@v4with:# 目标公开仓库(用户名/仓库名 格式)external_repository:qiekuo/HongyunX-Agent-Web-Deploy# 引用我们配置的密钥personal_token:${{secrets.DEPLOY_TOKEN}}# 要推送的本地产物目录publish_dir:./dist# 目标仓库的分支名publish_branch:gh-pages# 提交记录信息,方便追溯版本commit_message:"自动部署: ${{ github.sha }}"# 自动添加 .nojekyll 文件,防止 GitHub 过滤下划线开头的资源enable_jekyll:false4.3 提交文件到仓库
将.github文件夹及内部文件,提交到本地 Git 并推送到私有仓库的main分支。
五、步骤4:前端项目部署适配(必做,否则白屏/404)
GitHub Pages 项目站点是二级路径,必须修改项目基础路径,否则静态资源会加载失败。
5.1 Vite 基础路径配置
打开项目中的vite.config.ts(或vite.config.js),添加base配置:
import{defineConfig}from'vite'exportdefaultdefineConfig({// 必须与公开部署仓库名完全一致,首尾都带斜杠,大小写严格匹配base:'/HongyunX-Agent-Web-Deploy/',// 下方保留你原有的其他配置(plugins、server 等)// plugins: [vue()],// ...})原理说明:GitHub Pages 项目站点的根路径是域名/仓库名/,如果不配置 base,项目会默认从根路径加载资源,导致 js/css 文件 404,页面空白。
5.2 SPA 路由刷新 404 修复
如果你的项目使用了 Vue Router / React Router 的 history 模式,刷新页面会出现 404,按以下方式修复:
- 在项目的
public目录下新建文件404.html - 将
index.html的全部内容完整复制到404.html中 - 构建打包时,该文件会自动进入 dist 目录
原理说明:GitHub Pages 遇到不存在的路径时会返回 404.html,我们让它和 index.html 内容一致,前端路由就能正常接管页面。
5.3 关于 .nojekyll 文件
上述工作流配置中enable_jekyll: false会自动在部署仓库生成.nojekyll空文件,无需手动添加。它的作用是关闭 GitHub 默认的 Jekyll 解析,防止_assets等下划线开头的文件夹被过滤。
六、步骤5:公开部署仓库开启 GitHub Pages
- 打开公开部署仓库:
https://github.com/qiekuo/HongyunX-Agent-Web-Deploy - 顶部菜单点击Settings(设置)
- 左侧菜单找到Pages
- 在Build and deployment区域按以下选择:
- Source(来源):选择
Deploy from a branch(从分支部署) - Branch(分支):
- 第一个下拉框:暂时可能看不到
gh-pages分支(第一次构建后才会自动创建),可先选main,等第一次构建完成后再回来修改 - 第二个下拉框:选择
/ (root)(根目录)
- 第一个下拉框:暂时可能看不到
- Source(来源):选择
- 点击Save保存
说明:第一次工作流执行成功后,会自动在公开仓库创建
gh-pages分支。创建完成后,请回到此页面,将 Branch 切换为gh-pages,确保线上站点只读取部署产物,不受 main 分支文件影响。
七、步骤6:首次触发部署与结果验证
7.1 触发构建
将前面修改的vite.config.ts、新增的.github工作流、public/404.html全部提交并推送到私有仓库的main分支。
7.2 查看构建状态
- 打开私有源码仓库 → 顶部菜单点击Actions
- 列表中会出现一条正在运行的工作流,名称为「自动构建并部署到公开仓库」
- 点击进入可以查看每一步的执行日志,绿色对勾代表成功,红色叉号代表失败,失败时可点击对应步骤查看报错详情
7.3 验证站点访问
工作流全部执行成功后,等待 1~3 分钟(GitHub Pages 缓存更新需要时间),在浏览器访问:
https://qiekuo.github.io/HongyunX-Agent-Web-Deploy/页面正常加载即代表部署成功。
八、步骤7:部署仓库安全加固(推荐)
为防止误操作篡改线上产物,建议给公开仓库的部署分支添加保护规则。
- 打开公开部署仓库 →Settings→ 左侧Branches
- 点击Add branch protection rule(添加分支保护规则)
- 填写配置:
- Branch name pattern:填写
gh-pages - 勾选Do not allow force pushes(禁止强制推送覆盖历史代码)
- 勾选Do not allow deletions(禁止删除该分支)
- Branch name pattern:填写
- 拉到底部点击Create保存
九、日常开发流程
配置完成后,日常开发无需额外操作:
- 本地编写代码
- 提交并推送到私有仓库
main分支 - 等待 1~2 分钟自动构建部署完成
- 刷新线上页面查看更新
十、全场景问题排查手册
1. 工作流执行失败,报 403 权限错误
- 检查 PAT 令牌是否勾选了完整的
repo权限 - 检查私有仓库 Secrets 的名称是否严格为
DEPLOY_TOKEN,大小写一致 - 检查 PAT 令牌是否已过期,可重新生成替换
- 确认
external_repository填写格式为用户名/仓库名,不要写完整 URL
2. 页面打开空白,控制台报 css/js 404
- 99% 是
vite.config.ts中base配置错误 - 必须严格写成
/HongyunX-Agent-Web-Deploy/,首尾斜杠不能丢,大小写和仓库名完全一致 - 修改后重新提交代码,等待重新部署
3. 页面刷新后出现 404
- 确认
public目录下已添加404.html,且内容与index.html完全一致 - 确认文件已提交并重新部署
4. 公开仓库看不到 gh-pages 分支
- 说明工作流还没执行成功,去私有仓库的 Actions 页面查看报错
- 常见失败原因:项目本地 build 就报错、依赖安装失败、package.json 里没有
build脚本
5. 样式、图片资源加载不出来
- 检查资源引用路径是否使用了绝对路径
/xxx,项目级部署请使用相对路径 - 确认
base配置正确,Vite 会自动根据 base 处理静态资源路径