Skip to content

master分支提交测试 #4

master分支提交测试

master分支提交测试 #4

Workflow file for this run

name: 部署文档系统
# 触发条件:master分支推送或手动触发
on:
push:
branches: [ master ]
paths:
- 'README.md'
- 'src/**'
- 'include/**'
- 'examples/**'
- '.github/workflows/docs-deploy.yml'
workflow_dispatch: # 允许手动触发
# 权限设置
permissions:
contents: write
pages: write
id-token: write
# 确保同时只有一个部署在运行
concurrency:
group: "pages-deployment"
cancel-in-progress: false
jobs:
collect-and-deploy:
name: 收集文档并部署到docsify分支
runs-on: ubuntu-latest
steps:
- name: 检出master分支
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取完整历史记录
token: ${{ secrets.GITHUB_TOKEN }}
- name: 设置Node.js环境
uses: actions/setup-node@v4
with:
node-version: '18'
- name: 收集项目文档
id: collect
run: |
echo "🔄 开始收集项目文档..."
# 创建临时文档目录
mkdir -p temp_docs/modules
mkdir -p temp_docs/api
mkdir -p temp_docs/examples
# 收集主README
if [ -f "README.md" ]; then
echo "📄 收集主README"
cp README.md temp_docs/
fi
# 收集模块README
module_count=0
if [ -d "src" ]; then
for dir in src/*/; do
if [ -d "$dir" ]; then
module_name=$(basename "$dir")
if [ -f "$dir/README.md" ]; then
echo "📁 收集模块文档: $module_name"
cp "$dir/README.md" "temp_docs/modules/${module_name}.md"
module_count=$((module_count + 1))
fi
fi
done
fi
# 收集示例文档
example_count=0
if [ -d "examples" ]; then
for example in examples/*/; do
if [ -d "$example" ]; then
example_name=$(basename "$example")
if [ -f "$example/README.md" ]; then
echo "💡 收集示例文档: $example_name"
cp "$example/README.md" "temp_docs/examples/${example_name}.md"
example_count=$((example_count + 1))
fi
fi
done
fi
# 生成收集统计
echo "modules_collected=$module_count" >> $GITHUB_OUTPUT
echo "examples_collected=$example_count" >> $GITHUB_OUTPUT
echo "collection_time=$(date '+%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT
- name: 检出docsify分支
run: |
echo "📦 切换到docsify分支..."
# 检查docsify分支是否存在
if git show-ref --verify --quiet refs/remotes/origin/docsify; then
echo "docsify分支已存在,检出..."
git checkout docsify
git pull origin docsify
else
echo "docsify分支不存在,创建新分支..."
git checkout --orphan docsify
git rm -rf .
# 创建基础docsify结构
mkdir -p docs/modules docs/api docs/examples
fi
- name: 更新docsify分支文档
run: |
echo "📝 更新docsify分支文档..."
# 确保docs目录存在
mkdir -p docs/modules docs/api docs/examples
# 复制收集到的文档
if [ -d "temp_docs" ]; then
cp -r temp_docs/* docs/ 2>/dev/null || true
fi
# 生成侧边栏配置
cat > docs/_sidebar.md << 'EOF'
* [首页](/)

Check failure on line 126 in .github/workflows/docs-deploy.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/docs-deploy.yml

Invalid workflow file

You have an error in your yaml syntax on line 126
* [快速开始](README.md)
* **核心模块**
EOF
# 添加模块链接
if [ -d "docs/modules" ]; then
for module_file in docs/modules/*.md; do
if [ -f "$module_file" ]; then
module_name=$(basename "$module_file" .md)
echo " * [$module_name](modules/$module_name.md)" >> docs/_sidebar.md
fi
done
fi
# 添加示例链接
echo "" >> docs/_sidebar.md
echo "* **示例代码**" >> docs/_sidebar.md
if [ -d "docs/examples" ]; then
for example_file in docs/examples/*.md; do
if [ -f "$example_file" ]; then
example_name=$(basename "$example_file" .md)
echo " * [$example_name](examples/$example_name.md)" >> docs/_sidebar.md
fi
done
fi
# 生成导航栏
cat > docs/_navbar.md << 'EOF'
* [GitHub](https://github.com/zuoliangyu/EmbedKit)
* [问题反馈](https://github.com/zuoliangyu/EmbedKit/issues)
EOF
# 生成封面页
cat > docs/_coverpage.md << 'EOF'
# EmbedKit
> 轻量级嵌入式开发工具包
- 模块化设计,易于扩展
- 高性能,低内存占用
- 详细的文档和示例
[开始使用](#quick-start)
[查看GitHub](https://github.com/zuoliangyu/EmbedKit)
EOF
# 生成主页
if [ -f "docs/README.md" ]; then
# 如果收集到主README,使用它
echo "使用收集到的主README"
else
# 否则创建默认主页
cat > docs/README.md << 'EOF'
# EmbedKit
欢迎使用 EmbedKit - 轻量级嵌入式开发工具包!
## 快速开始
这里是项目的文档主页。文档会从master分支自动收集和更新。
## 项目结构
- **核心模块**: 查看左侧导航中的模块文档
- **示例代码**: 学习如何使用各个组件
- **API文档**: 详细的接口说明
## 更新说明
本文档系统会在master分支更新时自动同步。最后更新时间: $(date '+%Y-%m-%d %H:%M:%S')
EOF
fi
# 生成docsify配置
cat > docs/index.html << 'EOF'
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>EmbedKit Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="EmbedKit - 轻量级嵌入式开发工具包">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
<link rel="icon" href="_media/favicon.ico">
</head>
<body>
<div id="app">加载中...</div>
<script>
window.$docsify = {
name: 'EmbedKit',
repo: 'https://github.com/zuoliangyu/EmbedKit',
loadSidebar: true,
loadNavbar: true,
coverpage: true,
onlyCover: false,
maxLevel: 4,
subMaxLevel: 2,
auto2top: true,
homepage: 'README.md',
search: {
maxAge: 86400000, // 过期时间,单位毫秒,默认一天
paths: 'auto',
placeholder: '🔍 搜索文档',
noData: '😞 没有找到结果',
depth: 6
},
copyCode: {
buttonText: '📋 复制',
errorText: '❌ 复制失败',
successText: '✅ 已复制'
},
pagination: {
previousText: '⬅️ 上一页',
nextText: '下一页 ➡️',
crossChapter: true
}
}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code@2"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-pagination@2/dist/docsify-pagination.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-c.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
</body>
</html>
EOF
# 创建.nojekyll文件
touch docs/.nojekyll
- name: 提交更新到docsify分支
run: |
echo "💾 提交文档更新..."
# 配置git
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
# 添加所有文档文件
git add docs/
# 检查是否有变更
if git diff --staged --quiet; then
echo "📝 没有文档更新"
else
# 提交变更
git commit -m "docs: 自动更新文档 (来自master分支)
📊 收集统计:
- 模块文档: ${{ steps.collect.outputs.modules_collected }} 个
- 示例文档: ${{ steps.collect.outputs.examples_collected }} 个
- 更新时间: ${{ steps.collect.outputs.collection_time }}
- 触发提交: ${{ github.sha }}
🤖 由GitHub Actions自动生成"
# 推送到docsify分支
git push origin docsify
echo "✅ 文档已更新到docsify分支"
fi
- name: 设置GitHub Pages
uses: actions/configure-pages@v4
- name: 上传Pages制品
uses: actions/upload-pages-artifact@v3
with:
path: docs/
- name: 部署到GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- name: 部署成功通知
run: |
echo "## 📚 文档部署成功!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📊 本次收集统计" >> $GITHUB_STEP_SUMMARY
echo "- 🔢 收集模块: ${{ steps.collect.outputs.modules_collected }} 个" >> $GITHUB_STEP_SUMMARY
echo "- 💡 收集示例: ${{ steps.collect.outputs.examples_collected }} 个" >> $GITHUB_STEP_SUMMARY
echo "- ⏰ 更新时间: ${{ steps.collect.outputs.collection_time }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🌐 访问地址" >> $GITHUB_STEP_SUMMARY
echo "- [在线文档](${{ steps.deployment.outputs.page_url }})" >> $GITHUB_STEP_SUMMARY
echo "- [docsify分支](https://github.com/${{ github.repository }}/tree/docsify)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### ℹ️ 说明" >> $GITHUB_STEP_SUMMARY
echo "文档从master分支自动收集,保存在docsify分支,并自动部署到GitHub Pages。" >> $GITHUB_STEP_SUMMARY