Skip to content

Deploy Documentation #221

Deploy Documentation

Deploy Documentation #221

Workflow file for this run

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/