diff --git a/.gitea/workflows/build_and_deploy_docs.yml b/.gitea/workflows/build_and_deploy_docs.yml index 902c1f4..0975e85 100644 --- a/.gitea/workflows/build_and_deploy_docs.yml +++ b/.gitea/workflows/build_and_deploy_docs.yml @@ -7,53 +7,50 @@ on: jobs: build-and-deploy: + # 依然使用标签,确保任务在正确的 Runner 上执行 runs-on: docs-deployer steps: - name: Checkout repository - uses: actions/checkout@v3 + # 注意:这一步仍然需要网络来访问 github.com + uses: actions/checkout@v2 - # --- 缓存和安装 rsync --- - - name: Cache apt packages - uses: actions/cache@v3 - with: - # 缓存 apt 的包存档 - path: /var/cache/apt/archives - # 缓存的 key,基于操作系统和日期。每天会生成一个新的缓存。 - key: ${{ runner.os }}-apt-${{ hashFiles('**/lockfiles') }}-${{ steps.get-date.outputs.date }} - restore-keys: | - ${{ runner.os }}-apt-${{ hashFiles('**/lockfiles') }}- - - name: Install rsync - run: apt-get update && apt-get install -y rsync - - # --- 缓存和安装 mdBook --- - - name: Cache mdBook + - name: Install mdBook id: cache-mdbook uses: actions/cache@v3 with: - # 定义一个专门存放 mdbook 的路径 path: ~/.local/bin/mdbook - # 缓存的 key,基于操作系统和 mdbook 的版本号 - key: ${{ runner.os }}-mdbook-0.4.36 # 建议锁定一个具体版本 + key: ${{ runner.os }}-mdbook-0.4.36 - - name: Install mdBook - # 只有在上面的缓存步骤没有找到缓存时 (cache-hit is false),才执行此步骤 + - name: Install mdBook if not cached if: steps.cache-mdbook.outputs.cache-hit != 'true' + # 注意:这一步仍然需要网络来访问 github.com run: | - echo "mdBook cache not found, installing from release..." - # 从 GitHub release 下载指定版本的 mdbook curl -sL https://github.com/rust-lang/mdBook/releases/download/v0.4.36/mdbook-v0.4.36-x86_64-unknown-linux-gnu.tar.gz | tar xvz -C ~/.local/bin - # 确保它有执行权限 chmod +x ~/.local/bin/mdbook - # --- 构建与部署步骤保持不变 --- - name: Build mdBook docs run: ~/.local/bin/mdbook build + # --- 部署步骤已更新为使用 cp --- - name: Deploy to Gitea Pages Directory run: | + # 目标目录,这是我们挂载到容器内的路径 TARGET_DIR="/mnt/gitea-pages/dao-os/dao-os-docs" - echo "🚀 Deploying to host via volume mount..." + # 构建产物的源目录 + SOURCE_DIR="./book" + + echo "🚀 Deploying to host via volume mount using 'cp'..." + + # 确保顶层目标目录存在 mkdir -p "$TARGET_DIR" - rsync -a --delete ./book/ "$TARGET_DIR/" + + # 1. 清理旧文件:删除目标目录下的所有内容,确保干净的部署环境 + # find ... -delete 比 rm -rf 更安全一些 + find "$TARGET_DIR" -mindepth 1 -delete + + # 2. 复制新文件:将构建好的 book 目录下的所有内容,复制到目标目录 + # cp -r a/. b/ 的语法可以确保 book 目录的内容被直接复制到 TARGET_DIR + cp -r "$SOURCE_DIR"/. "$TARGET_DIR/" + echo "✅ Deployment successful!"