name: Docs Sync Publish Repo on: push: branches: - main paths: - docs/** - scripts/docs-sync-publish.mjs - .github/workflows/docs-sync-publish.yml workflow_dispatch: permissions: contents: read jobs: sync-publish-repo: runs-on: ubuntu-latest steps: - name: Checkout source repo uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 22 - name: Clone publish repo env: OPENCLAW_DOCS_SYNC_TOKEN: ${{ secrets.OPENCLAW_DOCS_SYNC_TOKEN }} run: | set -euo pipefail git clone \ "https://x-access-token:${OPENCLAW_DOCS_SYNC_TOKEN}@github.com/openclaw/docs.git" \ publish - name: Sync docs into publish repo run: | node scripts/docs-sync-publish.mjs \ --target "$GITHUB_WORKSPACE/publish" \ --source-repo "$GITHUB_REPOSITORY" \ --source-sha "$GITHUB_SHA" - name: Commit publish repo sync working-directory: publish run: | set -euo pipefail if git diff --quiet -- docs .openclaw-sync; then echo "No publish-repo changes." exit 0 fi git config user.name "openclaw-docs-sync[bot]" git config user.email "openclaw-docs-sync[bot]@users.noreply.github.com" git add docs .openclaw-sync git commit -m "chore(sync): mirror docs from $GITHUB_REPOSITORY@$GITHUB_SHA" for attempt in 1 2 3 4 5; do git fetch origin main git rebase origin/main if git push origin HEAD:main; then exit 0 fi echo "Push attempt ${attempt} failed; retrying." sleep $((attempt * 2)) done echo "Failed to push publish-repo sync after retries." exit 1