lenskit/lkpy

View on GitHub
.github/workflows/docs.yml

Summary

Maintainability
Test Coverage
# GENERATED FILE, do not edit
# This file was generated with Typeline
# generated from: workflows/docs.ts
name: Documentation
'on':
  push:
    branches:
      - main
  pull_request: {}
  workflow_dispatch: {}
concurrency:
  group: 'doc-${{github.ref}}'
  cancel-in-progress: true
permissions:
  contents: read
  pages: write
  id-token: write
jobs:
  build:
    name: Build documentation
    runs-on: ubuntu-latest
    steps:
      - name: "πŸ›’ Checkout"
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: prefix-dev/setup-pixi@v0.8.1
        with:
          pixi-version: latest
          activate-environment: true
          environments: doc
          cache-write: false
      - id: docs
        name: "πŸ“š Build documentation site"
        run: |
          just docs
      - name: "πŸ“€ Package documentation site"
        uses: actions/upload-artifact@v4
        with:
          name: lenskit-docs
          path: build/doc
  archive:
    name: Archive documentation
    runs-on: ubuntu-latest
    needs:
      - build
    if: github.event_name == 'push' || github.event_name == 'release'
    environment: docs
    steps:
      - name: "πŸ›’ Checkout"
        uses: actions/checkout@v4
        with:
          fetch-depth: 1
      - name: Check out doc site
        uses: actions/checkout@v4
        with:
          repository: lenskit/lenskit-docs
          ssh-key: '${{ secrets.DOC_DEPLOY_KEY }}'
          path: doc-site
          ref: version/latest
      - name: "πŸ“₯ Fetch documentation package"
        uses: actions/download-artifact@v4
        with:
          name: lenskit-docs
          path: build/doc
      - name: "πŸ›» Copy documentation content"
        run: |
          rsync -av --delete --exclude=.git/ --exclude=.buildinfo --exclude=.doctrees build/doc/ doc-site/
          cd doc-site
          git config user.name 'LensKit Doc Bot'
          git config user.email 'docbot@lenskit.org'
          git add .
          git commit -m 'rebuild documentation'
      - name: "πŸ›« Push documentation"
        run: cd doc-site && git push
  publish:
    name: Publish documentation
    runs-on: ubuntu-latest
    needs:
      - archive
    if: github.event_name == 'push' || github.event_name == 'release'
    environment:
      name: github-pages
      url: '${{ steps.deployment.outputs.page_url }}'
    steps:
      - name: Check out doc site
        uses: actions/checkout@v4
        with:
          repository: lenskit/lenskit-docs
          ref: main
          fetch-depth: 0
      - name: "🌳 Fix local git branches"
        run: |
          for branch in $(git branch -r --list 'origin/version/*'); do
              git branch -t ${branch##origin/} $branch
          done
          git branch -a
      - name: "πŸ›Έ Set up Deno"
        uses: denoland/setup-deno@v1
        with:
          deno-version: ~1.44
      - name: "πŸ§›πŸΌ Set up Just"
        uses: extractions/setup-just@v2
      - name: Build site content
        run: just build
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: "πŸ“¦ Upload artifact"
        uses: actions/upload-pages-artifact@v3
        with:
          path: site
      - name: "πŸ•ΈοΈ Deploy to GitHub Pages"
        id: deployment
        uses: actions/deploy-pages@v4