Deploy Documentation #221
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: Deploy Documentation | |
| on: | |
| push: | |
| branches: [main] | |
| schedule: | |
| # Rebuild hourly to pick up changes from addon repos | |
| # Replaces the per-addon trigger-docs.yml push-based approach | |
| - cron: '17 * * * *' | |
| workflow_dispatch: | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.3' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Checkout main plugin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: Ultimate-Multisite/ultimate-multisite | |
| path: ultimate-multisite | |
| token: ${{ secrets.DOCS_DISPATCH_TOKEN }} | |
| - name: Checkout addons | |
| run: | | |
| mkdir -p addons | |
| # Format: github-repo-name=local-dir-name | |
| declare -A ADDONS=( | |
| [ultimate-multisite-woocommerce]=ultimate-multisite-woocommerce | |
| [multisite-ultimate-site-exporter]=ultimate-multisite-site-exporter | |
| [multisite-ultimate-affiliatewp]=ultimate-multisite-affiliatewp | |
| [multisite-ultimate-ai-site-builder]=ultimate-multisite-ai-site-builder | |
| [ultimate-multisite-analytics]=ultimate-multisite-analytics | |
| [multisite-ultimate-captcha]=ultimate-multisite-captcha | |
| [ultimate-multisite-chuck-norris-facts]=ultimate-multisite-chuck-norris-facts | |
| [ultimate-multisite-content-sync]=ultimate-multisite-content-sync | |
| [multisite-ultimate-domain-seller]=ultimate-multisite-domain-seller | |
| [ultimate-multisite-fluent-forms]=ultimate-multisite-fluent-forms | |
| [multisite-ultimate-gocardless]=ultimate-multisite-gocardless | |
| [ultimate-multisite-gravity-forms]=ultimate-multisite-gravity-forms | |
| [multisite-ultimate-language-selector]=ultimate-multisite-language-selector | |
| [ultimate-multisite-loco-translate]=ultimate-multisite-loco-translate | |
| [multisite-ultimate-mailchimp]=ultimate-multisite-mailchimp | |
| [ultimate-multisite-mailster]=ultimate-multisite-mailster | |
| [multisite-ultimate-metered-plans]=ultimate-multisite-metered-plans | |
| [ultimate-multisite-multinetwork]=ultimate-multisite-multinetwork | |
| [ultimate-multisite-multi-tenancy]=ultimate-multisite-multi-tenancy | |
| [multisite-ultimate-payfast]=ultimate-multisite-payfast | |
| [multisite-ultimate-plugin-and-theme-manager]=ultimate-multisite-plugin-and-theme-manager | |
| [multisite-ultimate-support-agents]=ultimate-multisite-support-agents | |
| [multisite-ultimate-support-tickets]=ultimate-multisite-support-tickets | |
| [multisite-ultimate-vat]=ultimate-multisite-vat | |
| [multisite-ultimate-admin-page-creator]=ultimate-multisite-admin-page-creator | |
| [ultimate-multisite-addon-template]=ultimate-multisite-addon-template | |
| [ultimate-multisite-emails]=ultimate-multisite-emails | |
| [multisite-ultimate-metrics-and-onboarding]=ultimate-multisite-metrics-and-onboarding | |
| [tutor-multisite-compatibilty]=tutor-multisite-compatibility | |
| [material-wp]=material-wp | |
| ) | |
| for repo in "${!ADDONS[@]}"; do | |
| local_dir="${ADDONS[$repo]}" | |
| echo "Cloning $repo -> addons/$local_dir" | |
| git clone --depth 1 "https://x-access-token:${{ secrets.DOCS_DISPATCH_TOKEN }}@github.com/Ultimate-Multisite/$repo.git" "addons/$local_dir" 2>/dev/null || echo " Skipped $repo (not found)" | |
| done | |
| shell: bash | |
| - name: Update addon changelogs | |
| run: python3 scripts/update-changelogs.py | |
| continue-on-error: true | |
| - name: Generate hooks documentation | |
| run: bash scripts/generate-hooks.sh | |
| continue-on-error: true | |
| - name: Build documentation site | |
| run: npx docusaurus build | |
| - name: Deploy to server | |
| if: github.ref == 'refs/heads/main' | |
| run: | | |
| mkdir -p ~/.ssh | |
| echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_ed25519 | |
| chmod 600 ~/.ssh/id_ed25519 | |
| ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts 2>/dev/null | |
| rsync -avz --delete build/ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/srv/www/ultimatemultisite.com/docs/ |