| # 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 |