| name: sync wiki | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - master | |
| paths: | |
| - '.github/workflows/sync-wiki.yml' | |
| - 'docs/scripts/sync_docs_to_wiki.py' | |
| - 'docs/tests/test_sync_docs_to_wiki.py' | |
| - 'docs/zh/**' | |
| - 'docs/en/**' | |
| concurrency: | |
| group: sync-wiki-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| sync: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Validate manual ref | |
| if: github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/master' | |
| run: | | |
| echo "This workflow only publishes from refs/heads/master. Re-run it from the master branch." | |
| exit 1 | |
| - name: Check out docs repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Run sync unit tests | |
| working-directory: docs | |
| run: python -m unittest discover -s tests -p 'test_sync_docs_to_wiki.py' -v | |
| - name: Validate internal doc links | |
| run: python docs/scripts/sync_docs_to_wiki.py --source-root docs --check-links-only | |
| - name: Clone AstrBot wiki | |
| env: | |
| WIKI_TOKEN: ${{ secrets.ASTRBOT_WIKI_TOKEN }} | |
| run: | | |
| test -n "$WIKI_TOKEN" | |
| git clone "https://x-access-token:${WIKI_TOKEN}@github.com/AstrBotDevs/AstrBot.wiki.git" wiki | |
| - name: Generate wiki pages | |
| run: python docs/scripts/sync_docs_to_wiki.py --source-root docs --wiki-root wiki | |
| - name: Commit and push wiki changes | |
| working-directory: wiki | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git add . | |
| if git diff --cached --quiet; then | |
| echo "No wiki changes to push" | |
| exit 0 | |
| fi | |
| git commit -m "docs: sync wiki from AstrBot-1/docs" | |
| git push | |