好的,我决定采用方式A,请基于当前项目.github\workflows中的deploy.yml,新增一个CI 工作流 deploy-custom-domain.yml。
要求:
1.该工作流不设置 BASE_PATH(或显式设置为 /)
2.构建产物将使用根路径,适合自定义域名部署
我已经查看了现有的 deploy.yml 文件。现在为你创建新的 deploy-custom-domain.yml 工作流。
name: Build and Deploy to Custom Domain
on:
# 推送到 custom-domain 分支时触发
push:
branches: [custom-domain]
# 支持手动触发
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
# 1. 检出代码
- name: Checkout
uses: actions/checkout@v4
# 2. 设置 Node.js 环境
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
# 3. 安装依赖
- name: Install dependencies
run: npm ci
# 4. 动态创建 .env 文件
- name: Create .env file
run: |
echo "VITE_GITHUB_OWNER=${{ secrets.GH_OWNER }}" > .env
echo "VITE_GITHUB_REPO=${{ secrets.GH_REPO }}" >> .env
echo "VITE_GISCUS_REPO_ID=${{ secrets.GISCUS_REPO_ID }}" >> .env
echo "VITE_GISCUS_CATEGORY_ID=${{ secrets.GISCUS_CATEGORY_ID }}" >> .env
# 5. 执行构建(不设置 BASE_PATH,使用根路径 /)
- name: Build
run: npm run build
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
VITE_GITHUB_OWNER: ${{ secrets.GH_OWNER }}
VITE_GITHUB_REPO: ${{ secrets.GH_REPO }}
VITE_GISCUS_REPO_ID: ${{ secrets.GISCUS_REPO_ID }}
VITE_GISCUS_CATEGORY_ID: ${{ secrets.GISCUS_CATEGORY_ID }}
# 6. 部署到 GitHub Pages(自定义域名)
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GH_TOKEN }}
publish_dir: ./dist两个工作流的关键差异对比
| 对比项 | deploy.yml(GitHub Pages) |
deploy-custom-domain.yml(自定义域名) |
|---|---|---|
| 触发分支 | main |
custom-domain |
| BASE_PATH | /chunking-blog/ |
不设置(默认 /) |
| 定时触发 | 每 6 小时 | 无 |
| 部署目标 | stuffren.github.io/chunking-blog/ |
自定义域名(根路径) |
使用方式
- 创建文件:将上述内容保存到
.github/workflows/deploy-custom-domain.yml - 创建分支:在本地创建并推送
custom-domain分支git checkout -b custom-domain git push origin custom-domain - 配置自定义域名:
- 在仓库 Settings > Pages > Custom domain 中填写你的域名
- 添加 DNS 解析记录(CNAME 或 A 记录)
- 触发部署:推送代码到
custom-domain分支,或手动触发工作流
注意事项
- 两个工作流独立运行,互不影响
main分支继续部署到stuffren.github.io/chunking-blog/custom-domain分支部署到自定义域名(根路径)- 如需同步内容,可将
main分支的更改合并到custom-domain分支