Files
menav/.github/workflows/deploy.yml
Zuoling Rong f3da13035f refactor: 移除旧式双文件配置支持
- 简化配置加载逻辑,仅支持模块化配置
- 移除所有处理旧式配置文件的代码
- 创建配置迁移脚本,便于用户从旧版本迁移
2025-05-05 03:30:13 +08:00

183 lines
6.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Build and Deploy Site
on:
push:
branches: [ main ]
workflow_dispatch:
# 设置GITHUB_TOKEN的权限
permissions:
contents: write
pages: write
id-token: write
# 允许一个并发部署
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
# 使用persist-credentials: false以便后续步骤可以使用自定义的提交者
with:
persist-credentials: false
fetch-depth: 0 # 获取所有历史记录以进行diff检查
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '16'
cache: 'npm'
- name: Install dependencies
run: npm install
# --- 书签处理步骤 ---
- name: Check for bookmark HTML files
id: check_bookmark_files
run: |
if [ -d bookmarks ] && [ "$(find bookmarks -type f -name "*.html" 2>/dev/null)" ]; then
echo "found=true" >> $GITHUB_OUTPUT
echo "Bookmark HTML files found, will process them."
else
echo "found=false" >> $GITHUB_OUTPUT
echo "No bookmark HTML files found, skipping bookmark processing."
fi
- name: Process bookmark files
if: steps.check_bookmark_files.outputs.found == 'true'
run: |
echo "Processing bookmark files..."
node src/bookmark-processor.js
- name: Debug directory contents
if: steps.check_bookmark_files.outputs.found == 'true'
run: |
echo "Current directory contents:"
ls -la
echo "Checking config/user/pages directory:"
if [ -d config/user/pages ]; then
echo "Directory exists, listing contents:"
ls -la config/user/pages/
if [ -f config/user/pages/bookmarks.yml ]; then
echo "✓ bookmarks.yml exists in config/user/pages/"
cat config/user/pages/bookmarks.yml | head -n 10
else
echo "✗ bookmarks.yml does not exist in config/user/pages/"
fi
else
echo "✗ config/user/pages directory does not exist"
fi
- name: Commit bookmark configuration changes
if: steps.check_bookmark_files.outputs.found == 'true'
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action (Bookmarks)"
# Check if config/user/pages/bookmarks.yml exists
if [ -f config/user/pages/bookmarks.yml ]; then
# Check if this is a new file or it has changes
if git ls-files --error-unmatch config/user/pages/bookmarks.yml 2>/dev/null; then
echo "config/user/pages/bookmarks.yml exists and is tracked by git"
# Check if it has changes
if ! git diff --quiet config/user/pages/bookmarks.yml; then
echo "config/user/pages/bookmarks.yml has changes, committing..."
git add config/user/pages/bookmarks.yml
git commit -m "Update bookmarks configuration from imported bookmarks"
else
echo "No changes to bookmarks configuration"
fi
else
echo "config/user/pages/bookmarks.yml exists but is not tracked by git (new file)"
git add config/user/pages/bookmarks.yml
git commit -m "Add bookmarks configuration from imported bookmarks"
fi
# Also check for navigation file changes
if [ -f config/user/navigation.yml ]; then
if ! git diff --quiet config/user/navigation.yml; then
echo "config/user/navigation.yml has changes, committing..."
git add config/user/navigation.yml
git commit -m "Update navigation to include bookmarks page"
fi
fi
else
echo "ERROR: config/user/pages/bookmarks.yml does not exist! Bookmark processing may have failed."
echo "Current directory contents:"
ls -la config/user/pages/ || echo "Directory does not exist"
fi
- name: Clean up processed bookmark files
if: steps.check_bookmark_files.outputs.found == 'true'
run: |
# 检查是否有html文件需要清理
if [ "$(find bookmarks -type f -name "*.html" 2>/dev/null)" ]; then
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action (Cleanup)"
echo "Cleaning up HTML files..."
find bookmarks -type f -name "*.html" -delete
# 检查清理后是否有更改(比如删除了文件)
if ! git diff --quiet bookmarks/; then
git add bookmarks/
git commit -m "Clean up processed bookmark files"
# 不需要push
else
echo "No HTML files needed cleanup commit."
fi
else
echo "No HTML files found to clean up."
fi
# --- 书签处理步骤结束 ---
- name: Push configuration changes (if any)
# 只有在书签处理步骤修改了文件时才推送
# 使用 GITHUB_TOKEN 推送
if: steps.check_bookmark_files.outputs.found == 'true'
run: |
echo "Checking git status before pushing..."
git status
echo "Checking config/user/pages directory before pushing..."
if [ -d config/user/pages ]; then
echo "✓ config/user/pages directory exists"
ls -la config/user/pages/
else
echo "✗ WARNING: config/user/pages directory does not exist before pushing!"
fi
echo "Pushing changes to repository..."
git push "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" HEAD:${{ github.ref_name }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# --- 网站构建和部署步骤 ---
- name: Generate site
run: npm run generate
- name: Check favicon
run: |
if [ -f dist/favicon.ico ]; then
echo "Favicon exists"
ls -l dist/favicon.ico
else
echo "Warning: favicon.ico not found in dist directory"
# 暂时改为警告,避免因为图标问题阻止部署
# exit 1
fi
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'dist'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4