Fix Telegram polling ingress under event-loop stalls (#81746) #40
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: 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@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Checkout ClawHub docs source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: openclaw/clawhub | |
| path: clawhub-source | |
| fetch-depth: 1 | |
| persist-credentials: false | |
| token: ${{ secrets.OPENCLAW_DOCS_SYNC_TOKEN || github.token }} | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22.18.0" | |
| - name: Clone publish repo | |
| env: | |
| OPENCLAW_DOCS_SYNC_TOKEN: ${{ secrets.OPENCLAW_DOCS_SYNC_TOKEN }} | |
| run: | | |
| set -euo pipefail | |
| for attempt in 1 2 3 4 5; do | |
| rm -rf publish | |
| if git clone \ | |
| "https://x-access-token:${OPENCLAW_DOCS_SYNC_TOKEN}@github.com/openclaw/docs.git" \ | |
| publish; then | |
| exit 0 | |
| fi | |
| echo "Clone attempt ${attempt} failed; retrying." | |
| sleep $((attempt * 2)) | |
| done | |
| echo "Failed to clone publish repo after retries." >&2 | |
| exit 1 | |
| - name: Sync docs into publish repo | |
| run: | | |
| clawhub_sha="$(git -C "$GITHUB_WORKSPACE/clawhub-source" rev-parse HEAD)" | |
| node scripts/docs-sync-publish.mjs \ | |
| --target "$GITHUB_WORKSPACE/publish" \ | |
| --source-repo "$GITHUB_REPOSITORY" \ | |
| --source-sha "$GITHUB_SHA" \ | |
| --clawhub-repo "$GITHUB_WORKSPACE/clawhub-source" \ | |
| --clawhub-source-repo "openclaw/clawhub" \ | |
| --clawhub-source-sha "$clawhub_sha" | |
| - name: Install docs MDX checker dependency | |
| working-directory: publish | |
| run: npm install --no-save --package-lock=false @mdx-js/mdx@3.1.1 | |
| - name: Check publish docs MDX | |
| run: node "$GITHUB_WORKSPACE/publish/.openclaw-sync/check-docs-mdx.mjs" "$GITHUB_WORKSPACE/publish/docs" | |
| - name: Commit publish repo sync | |
| working-directory: publish | |
| run: | | |
| set -euo pipefail | |
| remote_source_sha() { | |
| git show refs/remotes/origin/main:.openclaw-sync/source.json 2>/dev/null \ | |
| | node -e 'const fs = require("node:fs"); try { const data = JSON.parse(fs.readFileSync(0, "utf8")); if (data.sha) process.stdout.write(data.sha); } catch {}' \ | |
| || true | |
| } | |
| skip_stale_source() { | |
| current_source_sha="$(remote_source_sha)" | |
| if [ -z "$current_source_sha" ] || [ "$current_source_sha" = "$GITHUB_SHA" ]; then | |
| return | |
| fi | |
| if git -C "$GITHUB_WORKSPACE" merge-base --is-ancestor "$GITHUB_SHA" "$current_source_sha"; then | |
| echo "Skipping stale publish sync for $GITHUB_SHA; origin/main already mirrors $current_source_sha." | |
| exit 0 | |
| fi | |
| } | |
| if git diff --quiet -- docs .openclaw-sync; then | |
| echo "No publish-repo changes." | |
| exit 0 | |
| fi | |
| if git fetch origin main:refs/remotes/origin/main; then | |
| skip_stale_source | |
| 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 | |
| if git fetch origin main:refs/remotes/origin/main; then | |
| skip_stale_source | |
| if git rebase -X theirs origin/main && git push origin HEAD:main; then | |
| exit 0 | |
| fi | |
| fi | |
| git rebase --abort >/dev/null 2>&1 || true | |
| echo "Publish sync attempt ${attempt} failed; retrying." | |
| sleep $((attempt * 2)) | |
| done | |
| echo "Failed to push publish-repo sync after retries." | |
| exit 1 |