Generate Doxygen Documentation #14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Generate Doxygen Documentation | |
| on: | |
| schedule: | |
| - cron: '0 0 * * 1' # Every Monday at midnight UTC | |
| workflow_dispatch: # Manual trigger | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-and-deploy: | |
| name: Build and Deploy Docs | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| # Only run on main branch of the main repository | |
| if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: thejerrybao/setup-swap-space@v1 | |
| with: | |
| swap-space-path: /swapfile | |
| swap-size-gb: 8 | |
| remove-existing-swap-files: true | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Install Doxygen and Graphviz | |
| run: | | |
| set -euo pipefail | |
| sudo apt-get update | |
| sudo apt-get install -y doxygen graphviz | |
| - name: Generate documentation | |
| run: | | |
| set -euo pipefail | |
| # Override DOT_NUM_THREADS to avoid parallel dot race condition bug | |
| sed -i 's/^DOT_NUM_THREADS.*/DOT_NUM_THREADS = 1/' .doxygen | |
| doxygen .doxygen | |
| # Verify documentation was generated | |
| if [ ! -f "internal_docs/index.html" ]; then | |
| echo "Error: Documentation generation failed - index.html not found" | |
| exit 1 | |
| fi | |
| - name: Install Rclone | |
| run: | | |
| set -euo pipefail | |
| sudo -v | |
| curl -fsSL https://rclone.org/install.sh | sudo bash | |
| - name: optimize | |
| run: | | |
| set -euo pipefail | |
| rm -f internal_docs/Nodes.xml internal_docs/Tokens.xml | |
| find internal_docs -name "*.map" -type f -delete || true | |
| find internal_docs -name "*.md5" -type f -delete || true | |
| - name: upload | |
| # We configure rclone dynamically using environment variables | |
| run: | | |
| set -euo pipefail | |
| # Remove existing config if it exists to avoid conflicts | |
| rclone config delete cloudflare 2>/dev/null || true | |
| rclone config create cloudflare s3 \ | |
| provider Cloudflare \ | |
| access_key_id ${{ secrets.R2_ACCESS_KEY_ID }} \ | |
| secret_access_key ${{ secrets.R2_SECRET_ACCESS_KEY }} \ | |
| endpoint ${{ secrets.R2_ENDPOINT }} | |
| rclone sync internal_docs/ cloudflare:orcaslicer-internals \ | |
| --progress \ | |
| --transfers 512 \ | |
| --checkers 512 | |
| echo "Documentation upload completed successfully" |