You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提交Git到主仓库时,能否自动更新子域名对应仓库内容?

实现主仓库推送自动同步子仓库内容(mdBook场景)

完全可以通过Git + GitHub Actions实现主仓库推送时自动同步对应卷到子仓库,以下是具体实现步骤:

1. 准备子仓库

  • 为每部已完成的卷创建独立GitHub仓库(比如theologicus-volume2),仓库结构要匹配mdBook单卷要求——至少包含该卷的src/目录和对应的book.toml(可从主仓库对应卷目录复制基础配置)
  • 提前完成子仓库部署配置:绑定子域名volume2.theologic.us到GitHub Pages,确保mdBook构建逻辑正常(和主站部署流程一致)

2. 生成访问令牌

在你的GitHub账户设置里生成一个Personal Access Token (PAT),权限勾选repo(允许读写仓库),保存好这个令牌备用。

3. 配置主仓库的GitHub Actions工作流

在主仓库的.github/workflows/目录下新建工作流文件,比如sync-volumes.yml,内容如下(替换占位符为你的实际信息):

name: Sync Completed Volumes to Sub Repos

on:
  push:
    branches: [ main ]
    # 仅当volume2目录变更时触发,减少不必要的工作流执行
    paths:
      - 'volume2/**'

jobs:
  sync-volume2:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取主仓库代码
        uses: actions/checkout@v4

      - name: 准备要同步的卷内容
        run: |
          # 创建临时目录存放卷内容
          mkdir -p /tmp/volume2-sync
          # 复制主仓库中volume2的所有内容到临时目录
          cp -r volume2/* /tmp/volume2-sync/
          # 如果子仓库需要独立的book.toml,这里可以单独复制或调整配置
          # cp ./volume2/book.toml /tmp/volume2-sync/

      - name: 推送到子仓库
        uses: ad-m/github-push-action@master
        with:
          repository: 你的GitHub用户名/theologicus-volume2
          branch: main
          directory: /tmp/volume2-sync
          github_token: ${{ secrets.VOLUME_SYNC_PAT }}

4. 配置主仓库的Secrets

进入主仓库的「Settings > Secrets and variables > Actions」,添加一个名为VOLUME_SYNC_PAT的秘密变量,值为之前生成的PAT。

5. 验证同步效果

向主仓库的volume2/目录提交一次变更,查看GitHub Actions工作流是否执行成功,再检查子仓库代码是否更新、子域名网站是否同步了新内容。

额外优化点

  • 多卷同步:如果有多个已完成的卷,可以在同一个工作流中添加多个job,分别处理不同卷的同步逻辑
  • 构建验证:在工作流中添加mdBook构建步骤,确保同步的内容能正常生成书籍,避免无效同步
  • 分支限定:可以根据需要调整on.push.branches,只在特定分支推送时触发同步

内容的提问来源于stack exchange,提问作者Joseph Louthan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:23:28