blob: 1f63d49f0bcc625b53e0136688ccb38781c5c5c6 [file] [log] [blame]
# 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-20.04
env:
CC: clang
CXX: clang++
steps:
- name: Checkout out repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
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@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.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@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14
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