# Render the course (single source of truth = modules/) into the GitHub wiki on # every push to main. The wiki is generated BUILD OUTPUT; never hand-edit it. # This activates on the GitHub mirror; the Gitea copy uses .gitea/workflows/. # # Prerequisites (one-time on the mirror): # 1. The wiki must be INITIALIZED first; create any page once in the GitHub UI, # otherwise the .wiki.git remote does not exist and the clone fails. # 2. A repo secret WIKI_TOKEN holds a PAT with wiki/repo write. The default # GITHUB_TOKEN CANNOT push to the wiki repo, so a PAT is required. name: Sync course wiki on: push: branches: [main] paths: - 'modules/**' - 'capstone/**' - 'README.md' - 'tools/build_wiki.py' - '.github/workflows/sync-wiki.yml' workflow_dispatch: {} jobs: sync-wiki: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: actions/setup-python@v6 with: python-version: '3.x' - name: Render and push the wiki shell: bash env: WIKI_TOKEN: ${{ secrets.WIKI_TOKEN }} run: | set -euo pipefail if [ -z "${WIKI_TOKEN:-}" ]; then echo "::error::WIKI_TOKEN secret is not set; see this workflow's header." exit 1 fi repo="${GITHUB_REPOSITORY}" # owner/repo git clone "https://x-access-token:${WIKI_TOKEN}@github.com/${repo}.wiki.git" wiki python3 tools/build_wiki.py --repo-root . --out wiki \ --web-base "https://github.com/${repo}" --branch main --host github cd wiki git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add -A if git diff --cached --quiet; then echo "wiki already up to date"; exit 0 fi git commit -m "docs(wiki): sync from modules/ @ $(echo "$GITHUB_SHA" | cut -c1-8)" git push origin HEAD