mirror of
				https://github.com/zopiya/x-eden-quartz.git
				synced 2025-11-04 06:46:48 +08:00 
			
		
		
		
	improve content sync logic and add safety checks
This commit is contained in:
		
							
								
								
									
										70
									
								
								.github/workflows/build-and-deploy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/build-and-deploy.yml
									
									
									
									
										vendored
									
									
								
							@@ -20,32 +20,62 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: '20'  # 使用 Node.js 20 版本
 | 
			
		||||
 | 
			
		||||
      - name: Clone Wiki Repository and Clean Private Folders
 | 
			
		||||
      - name: Clone x-eden Repository
 | 
			
		||||
        run: |
 | 
			
		||||
          # 克隆 Wiki 仓库到临时目录
 | 
			
		||||
          git clone "${{ secrets.GITEA_REPO_CLONE }}" /tmp/wiki
 | 
			
		||||
          # 删除私密文件夹(如 Personal 文件夹)
 | 
			
		||||
          rm -rf /tmp/wiki/Personal
 | 
			
		||||
          # 如果有其他私密文件夹,也可以在这里添加删除命令
 | 
			
		||||
          # 克隆 x-eden 仓库到临时目录
 | 
			
		||||
          git clone "${{ secrets.GITEA_REPO_CLONE }}" /tmp/x-eden
 | 
			
		||||
 | 
			
		||||
      - name: Prepare Content Directory
 | 
			
		||||
      - name: Prepare Content Directory (simple allowlist copy)
 | 
			
		||||
        run: |
 | 
			
		||||
          # 清理旧的 content 目录
 | 
			
		||||
          set -euo pipefail
 | 
			
		||||
          rm -rf content
 | 
			
		||||
          # 将 Wiki 仓库内容复制到 content 目录
 | 
			
		||||
          cp -r /tmp/wiki content
 | 
			
		||||
          # 将 README.md 重命名为 index.md
 | 
			
		||||
          mv content/README.md content/index.md
 | 
			
		||||
          # 删除 index.md 的第一行
 | 
			
		||||
          sed -i '1d' content/index.md
 | 
			
		||||
          # 在 index.md 的开头插入 YAML 前置元数据
 | 
			
		||||
          sed -i '1i ---\ntitle: 数字花园\n---' content/index.md
 | 
			
		||||
          mkdir -p content
 | 
			
		||||
 | 
			
		||||
          # 仅拷贝允许公开的目录(不存在就跳过,不报错)
 | 
			
		||||
          for dir in \
 | 
			
		||||
            "00-knowledge" \
 | 
			
		||||
            "10-formal-sciences" \
 | 
			
		||||
            "16-computer-science" \
 | 
			
		||||
            "20-natural-sciences" \
 | 
			
		||||
            "30-social-sciences" \
 | 
			
		||||
            "40-professional" \
 | 
			
		||||
            "60-writing" \
 | 
			
		||||
            "70-future" 
 | 
			
		||||
          do
 | 
			
		||||
            if [ -d "/tmp/x-eden/$dir" ]; then
 | 
			
		||||
              cp -r "/tmp/x-eden/$dir" "content/"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          # 单文件:README.md -> index.md,并插入 frontmatter
 | 
			
		||||
          if [ -f /tmp/x-eden/README.md ]; then
 | 
			
		||||
            cp /tmp/x-eden/README.md content/index.md
 | 
			
		||||
            sed -i '1d' content/index.md || true
 | 
			
		||||
            sed -i '1i ---\ntitle: 数字花园\n---' content/index.md || true
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Sanity Check (ensure nothing private slipped in)
 | 
			
		||||
        run: |
 | 
			
		||||
          set -euo pipefail
 | 
			
		||||
          # 这些目录永远不应出现在 content 中
 | 
			
		||||
          bad_paths=$(ls -d \
 | 
			
		||||
            content/50-personal \
 | 
			
		||||
            content/80-project \
 | 
			
		||||
            content/90-obsidian \
 | 
			
		||||
            content/91-attachments \
 | 
			
		||||
            content/92-archive \
 | 
			
		||||
            content/99-inbox \
 | 
			
		||||
            2>/dev/null || true)
 | 
			
		||||
          if [ -n "$bad_paths" ]; then
 | 
			
		||||
            echo "ERROR: Found private folders in content:"
 | 
			
		||||
            echo "$bad_paths"
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Install Dependencies and Build Site
 | 
			
		||||
        run: |
 | 
			
		||||
          # 安装依赖并构建 Quartz 静态网站
 | 
			
		||||
          npm ci  # 使用 npm ci 安装依赖,确保一致性
 | 
			
		||||
          npx quartz build  # 使用 Quartz 构建静态网站
 | 
			
		||||
          npm ci
 | 
			
		||||
          npx quartz build
 | 
			
		||||
 | 
			
		||||
      - name: Deploy to GitHub Pages
 | 
			
		||||
        uses: peaceiris/actions-gh-pages@v4
 | 
			
		||||
@@ -54,4 +84,4 @@ jobs:
 | 
			
		||||
          publish_dir: ./public
 | 
			
		||||
          cname: x-eden.zopiya.com
 | 
			
		||||
          user_name: 'github-actions[bot]'
 | 
			
		||||
          user_email: 'github-actions[bot]@users.noreply.github.com'
 | 
			
		||||
          user_email: 'github-actions[bot]@users.noreply.github.com'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user