# Builds the website sourced from docs/website/ using `mkdocs` and pushes
# to the gh-pages branch for publishing on GitHub Pages.
#
# See https://squidfunk.github.io/mkdocs-material/publishing-your-site/

name: Publish Website

on:
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      # This file itself.
      - ".github/workflows/publish_website.yml"
      # Directly authored website source files.
      - "docs/website/**"
      # Python/pip release index page.
      - "build_tools/python_deploy/generate_release_index.py"
      # MLIR dialect definitions and .md generation using iree-tblgen.
      #   Technically this should also include the sources for Tablegen, but
      #   that rarely changes and we want to run this workflow conservatively.
      - "**.td"
      - "build_tools/cmake/iree_tablegen_doc.cmake"
  # Regenerate the release pip index when a release is created or deleted.
  release:
    types: [published, unpublished]

  # Run periodically to pick up any documentation changes that were somehow
  # missed by the above path filters as well as to scrape releases from other
  # projects that are included on the release index page. Downstream projects
  # typically build releases in the middle of the night (3AM PST, 11:00 UTC),
  # so we'll run a bit later than that (6AM PST, 14:00 UTC).
  schedule:
    - cron: "0 14 * * *"

jobs:
  publish_website:
    if: ${{ github.repository_owner == 'iree-org' || github.event_name == 'workflow_dispatch' }}

    # Note: a clean build of `iree-tblgen` takes ~5 minutes on standard runners.
    runs-on: ubuntu-24.04
    env:
      CC: clang
      CXX: clang++
    steps:
      - name: Checkout out repository
        uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
        with:
          submodules: true
          token: ${{ secrets.WRITE_ACCESS_TOKEN }}
      - name: Fetching base gh-pages branch
        # We have to explicitly fetch the gh-pages branch as well to preserve history
        run: git fetch --no-tags --prune --depth=1 origin "gh-pages:gh-pages"
      - name: Setting up Python
        uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
        with:
          python-version: 3.x
          cache: "pip"
      - name: Installing dependencies
        run: |
          pip install -r docs/website/requirements.txt
          pip install requests
          sudo apt update
          sudo apt install -y ninja-build

      # Build a release index page by scraping release package URLs.
      #
      # This can scrape the release pages from any public GitHub repositories.
      # Currently included repositories:
      #   https://github.com/iree-org/iree
      #   https://github.com/iree-org/iree-turbine
      # Ecosystem projects for consideration:
      #   https://github.com/nod-ai/shark-ai
      #   https://github.com/openxla/stablehlo
      #   https://github.com/llvm/torch-mlir (see below)
      #   https://github.com/llvm/torch-mlir-release
      - name: Generating release index
        run: |
          ./build_tools/python_deploy/generate_release_index.py \
            --repos="iree-org/iree,iree-org/iree-turbine" \
            --output=docs/website/docs/pip-release-links.html

      - name: ccache
        uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18
        with:
          key: ${{ github.job }}
      - name: Building documentation files
        run: ./docs/website/generate_extra_files.sh
      - name: Setting git config
        run: |
          git config --local user.email "iree-github-actions-bot@google.com"
          git config --local user.name "Website Publish Action"
      - name: Deploying to gh-pages
        working-directory: docs/website
        run: mkdocs gh-deploy
