Files
menav/.github/workflows/deploy.yml
2025-05-02 00:32:44 +08:00

129 lines
4.3 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: Create bookmarks directory if not exists
run: mkdir -p bookmarks
- name: Check for bookmark files
id: check_bookmark_files
run: |
if [ "$(find bookmarks -type f -name "*.html" 2>/dev/null)" ]; then
echo "found=true" >> $GITHUB_OUTPUT
echo "Found bookmark files to process"
else
echo "found=false" >> $GITHUB_OUTPUT
echo "No bookmark files found"
fi
- name: Process bookmark file
if: steps.check_bookmark_files.outputs.found == 'true'
run: node src/bookmark-processor.js
- name: Commit bookmarks.yml 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)"
# 检查 bookmarks.yml 是否真的被修改了
if ! git diff --quiet bookmarks.yml; then
echo "bookmarks.yml changed, committing..."
git add bookmarks.yml
git commit -m "Update bookmarks.yml from imported bookmarks"
# 不需要push因为构建步骤会使用当前工作区的内容
else
echo "No changes to bookmarks.yml"
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: |
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