name: Dotty the Documenteer on: push: branches: - master paths: - 'doc/**' - 'README.md' - 'mkdocs.yml' - '.github/workflows/docs.yml' pull_request: types: [opened, synchronize, reopened, labeled] paths: - 'doc/**' - 'README.md' - 'mkdocs.yml' - '.github/workflows/docs.yml' permissions: contents: read jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 # Needed for git-revision-date-localized plugin - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.x' - name: Install dependencies run: | pipx install mkdocs pipx inject mkdocs mkdocs-material pipx inject mkdocs pymdown-extensions pipx inject mkdocs mkdocs-callouts pipx inject mkdocs mkdocs-glightbox - name: Build documentation run: mkdocs build --clean - name: Upload site artifact uses: actions/upload-artifact@v4 with: name: site path: site/ deploy: if: github.ref == 'refs/heads/master' && github.event_name == 'push' needs: build runs-on: ubuntu-latest steps: - name: Download site artifact uses: actions/download-artifact@v4 with: name: site path: site/ - name: Checkout pages repo uses: actions/checkout@v4 with: repository: finit-project/finit-project.github.io path: pages ssh-key: ${{ secrets.DOCS_DEPLOY_KEY }} persist-credentials: true - name: Setup SSH for push run: | mkdir -p ~/.ssh chmod 700 ~/.ssh ssh-keyscan github.com >> ~/.ssh/known_hosts - name: Sync site to pages repo run: | rsync -a --delete --exclude .git site/ pages/ - name: Commit and push run: | cd pages/ if [ -z "$(git status --porcelain)" ]; then exit 0 fi SRC_REPO="${GITHUB_REPOSITORY}" SRC_REF="${GITHUB_SHA::7}" SRC_URL="https://github.com/${SRC_REPO}/commit/${SRC_REF}" git config user.name "GitHub Actions" git config user.email "actions@github.com" git add -A git commit -m "docs: update from ${SRC_REPO}@${SRC_REF}" \ -m "For details, see ${SRC_URL}" git push