Some checks failed
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
mdBook Build & Deploy / Build mdBook (push) Has been cancelled
Nickel Type Check / Nickel Type Checking (push) Has been cancelled
mdBook Build & Deploy / Documentation Quality Check (push) Has been cancelled
mdBook Build & Deploy / Deploy to GitHub Pages (push) Has been cancelled
mdBook Build & Deploy / Notification (push) Has been cancelled
218 lines
7.3 KiB
YAML
218 lines
7.3 KiB
YAML
name: mdBook Build & Deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'docs/**'
|
|
- '.github/workflows/mdbook-build-deploy.yml'
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'docs/**'
|
|
|
|
permissions:
|
|
contents: read
|
|
pages: write
|
|
id-token: write
|
|
|
|
concurrency:
|
|
group: mdbook-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
name: Build mdBook
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
artifact-name: ${{ steps.upload.outputs.artifact-name }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install mdBook
|
|
run: cargo install mdbook
|
|
shell: bash
|
|
|
|
- name: Build mdBook
|
|
working-directory: docs
|
|
run: |
|
|
echo "Building mdBook documentation..."
|
|
mdbook build
|
|
echo "Build output size:"
|
|
du -sh book/
|
|
shell: bash
|
|
|
|
- name: Validate HTML output
|
|
working-directory: docs/book
|
|
run: |
|
|
echo "Validating generated HTML..."
|
|
[ -f "index.html" ] && echo "✓ index.html exists" || exit 1
|
|
[ -f "print.html" ] && echo "✓ print.html exists" || exit 1
|
|
[ -f "css/general.css" ] && echo "✓ CSS files exist" || exit 1
|
|
[ -f "js/book.js" ] && echo "✓ JavaScript files exist" || exit 1
|
|
echo "✓ All essential files present"
|
|
shell: bash
|
|
|
|
- name: Count generated pages
|
|
working-directory: docs/book
|
|
run: |
|
|
page_count=$(find . -name "*.html" -type f | wc -l)
|
|
echo "Total HTML pages generated: $page_count"
|
|
shell: bash
|
|
|
|
- name: Upload artifact
|
|
id: upload
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: mdbook-site-${{ github.sha }}
|
|
path: docs/book/
|
|
retention-days: 30
|
|
if-no-files-found: error
|
|
|
|
- name: Artifact summary
|
|
run: |
|
|
echo "## mdBook Build Artifact" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Artifact Name:** mdbook-site-${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Commit:** ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "✅ mdBook documentation built successfully" >> $GITHUB_STEP_SUMMARY
|
|
|
|
quality-check:
|
|
name: Documentation Quality Check
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: mdbook-site-${{ github.sha }}
|
|
path: docs/book/
|
|
|
|
- name: Check for broken links (basic)
|
|
working-directory: docs/book
|
|
run: |
|
|
echo "Checking for common issues..."
|
|
|
|
# Check if index.html contains expected content
|
|
if grep -q "VAPORA" index.html; then
|
|
echo "✓ Content verification passed"
|
|
else
|
|
echo "⚠ Content verification warning"
|
|
fi
|
|
|
|
# Check for empty files
|
|
empty_files=$(find . -type f -size 0 | wc -l)
|
|
if [ "$empty_files" -eq 0 ]; then
|
|
echo "✓ No empty files found"
|
|
else
|
|
echo "⚠ Warning: Found $empty_files empty files"
|
|
fi
|
|
|
|
# Check CSS files
|
|
if [ -d "css" ] && [ $(ls css/*.css 2>/dev/null | wc -l) -gt 0 ]; then
|
|
echo "✓ CSS files present"
|
|
else
|
|
echo "❌ CSS files missing"
|
|
exit 1
|
|
fi
|
|
shell: bash
|
|
|
|
- name: Generate quality report
|
|
working-directory: docs/book
|
|
run: |
|
|
echo "## Documentation Quality Report" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### File Statistics" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Total files: $(find . -type f | wc -l)" >> $GITHUB_STEP_SUMMARY
|
|
echo "- HTML files: $(find . -name '*.html' | wc -l)" >> $GITHUB_STEP_SUMMARY
|
|
echo "- CSS files: $(find css -name '*.css' 2>/dev/null | wc -l)" >> $GITHUB_STEP_SUMMARY
|
|
echo "- JavaScript files: $(find js -name '*.js' 2>/dev/null | wc -l)" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Total size: $(du -sh . | cut -f1)" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### Status" >> $GITHUB_STEP_SUMMARY
|
|
echo "✅ Quality checks passed" >> $GITHUB_STEP_SUMMARY
|
|
|
|
deploy-to-pages:
|
|
name: Deploy to GitHub Pages
|
|
runs-on: ubuntu-latest
|
|
needs: [build, quality-check]
|
|
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: mdbook-site-${{ github.sha }}
|
|
path: docs/book/
|
|
|
|
- name: Setup Pages
|
|
uses: actions/configure-pages@v4
|
|
|
|
- name: Upload Pages artifact
|
|
uses: actions/upload-pages-artifact@v3
|
|
with:
|
|
path: docs/book/
|
|
|
|
- name: Deploy to GitHub Pages
|
|
id: deployment
|
|
uses: actions/deploy-pages@v4
|
|
continue-on-error: true
|
|
|
|
- name: Pages deployment summary
|
|
run: |
|
|
echo "## GitHub Pages Deployment" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
if [ "${{ job.status }}" == "success" ]; then
|
|
echo "✅ Successfully deployed to GitHub Pages" >> $GITHUB_STEP_SUMMARY
|
|
echo "📖 Documentation URL: ${{ steps.deployment.outputs.page_url }}" >> $GITHUB_STEP_SUMMARY
|
|
else
|
|
echo "⚠ GitHub Pages deployment skipped or unavailable" >> $GITHUB_STEP_SUMMARY
|
|
echo "This is expected if not using GitHub.com or Pages not configured" >> $GITHUB_STEP_SUMMARY
|
|
fi
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Build artifact retained for 30 days**" >> $GITHUB_STEP_SUMMARY
|
|
|
|
notify:
|
|
name: Notification
|
|
runs-on: ubuntu-latest
|
|
needs: [build, quality-check]
|
|
if: always()
|
|
steps:
|
|
- name: Build Status
|
|
run: |
|
|
if [ "${{ needs.build.result }}" == "success" ] && [ "${{ needs.quality-check.result }}" == "success" ]; then
|
|
echo "✅ mdBook documentation build successful"
|
|
echo "## Build Summary" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Component | Status |" >> $GITHUB_STEP_SUMMARY
|
|
echo "|-----------|--------|" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Build | ✅ Success |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Quality Checks | ✅ Passed |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Artifact | ✅ Uploaded |" >> $GITHUB_STEP_SUMMARY
|
|
exit 0
|
|
else
|
|
echo "❌ mdBook documentation build failed"
|
|
echo "## Build Summary" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Component | Status |" >> $GITHUB_STEP_SUMMARY
|
|
echo "|-----------|--------|" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Build | ${{ needs.build.result }} |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| Quality Checks | ${{ needs.quality-check.result }} |" >> $GITHUB_STEP_SUMMARY
|
|
exit 1
|
|
fi
|