216 lines · yaml
1# LLVM Documentation CI2# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3# See https://llvm.org/LICENSE.txt for license information.4# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5 6name: "Test documentation build"7 8permissions:9 contents: read10 11on:12 push:13 branches:14 - 'main'15 paths:16 - 'llvm/docs/**'17 - 'clang/docs/**'18 - 'clang/include/clang/Basic/AttrDocs.td'19 - 'clang/include/clang/Driver/ClangOptionDocs.td'20 - 'clang/include/clang/Basic/DiagnosticDocs.td'21 - 'clang-tools-extra/docs/**'22 - 'lldb/docs/**'23 - 'libunwind/docs/**'24 - 'libcxx/docs/**'25 - 'libc/docs/**'26 - 'lld/docs/**'27 - 'openmp/docs/**'28 - 'polly/docs/**'29 - 'flang/docs/**'30 - 'flang/include/flang/Optimizer/Dialect/FIROps.td'31 - '.github/workflows/docs.yml'32 pull_request:33 paths:34 - 'llvm/docs/**'35 - 'clang/docs/**'36 - 'clang/include/clang/Basic/AttrDocs.td'37 - 'clang/include/clang/Driver/ClangOptionDocs.td'38 - 'clang/include/clang/Basic/DiagnosticDocs.td'39 - 'clang-tools-extra/docs/**'40 - 'lldb/docs/**'41 - 'libunwind/docs/**'42 - 'libcxx/docs/**'43 - 'libc/docs/**'44 - 'lld/docs/**'45 - 'openmp/docs/**'46 - 'polly/docs/**'47 - 'flang/docs/**'48 - 'flang/include/flang/Optimizer/Dialect/FIROps.td'49 - '.github/workflows/docs.yml'50 51jobs:52 check-docs-build:53 name: "Test documentation build"54 runs-on: ubuntu-24.0455 if: github.repository == 'llvm/llvm-project'56 steps:57 - name: Fetch LLVM sources58 uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.059 with:60 fetch-depth: 261 - name: Get subprojects that have doc changes62 id: docs-changed-subprojects63 uses: tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47.0.064 with:65 skip_initial_fetch: true66 base_sha: 'HEAD~1'67 sha: 'HEAD'68 files_yaml: |69 llvm:70 - 'llvm/docs/**'71 clang:72 - 'clang/docs/**'73 - 'clang/include/clang/Basic/AttrDocs.td'74 - 'clang/include/clang/Driver/ClangOptionDocs.td'75 - 'clang/include/clang/Basic/DiagnosticDocs.td'76 clang-tools-extra:77 - 'clang-tools-extra/docs/**'78 lldb:79 - 'lldb/docs/**'80 libunwind:81 - 'libunwind/docs/**'82 libcxx:83 - 'libcxx/docs/**'84 libc:85 - 'libc/docs/**'86 lld:87 - 'lld/docs/**'88 openmp:89 - 'openmp/docs/**'90 polly:91 - 'polly/docs/**'92 flang:93 - 'flang/docs/**'94 - 'flang/include/flang/Optimizer/Dialect/FIROps.td'95 workflow:96 - '.github/workflows/docs.yml'97 - name: Setup Python env98 uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.099 with:100 python-version: '3.14'101 cache: 'pip'102 cache-dependency-path: 'llvm/docs/requirements-hashed.txt'103 - name: Install python dependencies104 run: pip install -r llvm/docs/requirements-hashed.txt105 - name: Install system dependencies106 run: |107 sudo apt-get update108 # swig and graphviz are lldb specific dependencies109 sudo apt-get install -y cmake ninja-build swig graphviz110 - name: Setup output folder111 run: mkdir built-docs112 - name: Build LLVM docs113 if: |114 steps.docs-changed-subprojects.outputs.llvm_any_changed == 'true' ||115 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'116 run: |117 cmake -B llvm-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_SPHINX=ON ./llvm118 TZ=UTC ninja -C llvm-build docs-llvm-html docs-llvm-man119 mkdir built-docs/llvm120 cp -r llvm-build/docs/* built-docs/llvm/121 - name: Build Clang docs122 if: |123 steps.docs-changed-subprojects.outputs.clang_any_changed == 'true' ||124 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'125 run: |126 cmake -B clang-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_SPHINX=ON ./llvm127 TZ=UTC ninja -C clang-build docs-clang-html docs-clang-man128 mkdir built-docs/clang129 cp -r clang-build/docs/* built-docs/clang/130 - name: Build clang-tools-extra docs131 if: |132 steps.docs-changed-subprojects.outputs.clang-tools-extra_any_changed == 'true' ||133 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'134 run: |135 cmake -B clang-tools-extra-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DLLVM_ENABLE_SPHINX=ON ./llvm136 TZ=UTC ninja -C clang-tools-extra-build docs-clang-tools-html docs-clang-tools-man137 mkdir built-docs/clang-tools-extra138 cp -r clang-tools-extra-build/docs/* built-docs/clang-tools-extra/139 - name: Build LLDB docs140 if: |141 steps.docs-changed-subprojects.outputs.lldb_any_changed == 'true' ||142 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'143 run: |144 cmake -B lldb-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lldb" -DLLVM_ENABLE_SPHINX=ON ./llvm145 TZ=UTC ninja -C lldb-build docs-lldb-html docs-lldb-man146 mkdir built-docs/lldb147 cp -r lldb-build/docs/* built-docs/lldb/148 - name: Build libunwind docs149 if: |150 steps.docs-changed-subprojects.outputs.libunwind_any_changed == 'true' ||151 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'152 run: |153 cmake -B libunwind-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libunwind" -DLLVM_ENABLE_SPHINX=ON ./runtimes154 TZ=UTC ninja -C libunwind-build docs-libunwind-html155 mkdir built-docs/libunwind156 cp -r libunwind-build/libunwind/docs/* built-docs/libunwind157 - name: Build libcxx docs158 if: |159 steps.docs-changed-subprojects.outputs.libcxx_any_changed == 'true' ||160 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'161 run: |162 cmake -B libcxx-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx;libunwind" -DLLVM_ENABLE_SPHINX=ON ./runtimes163 TZ=UTC ninja -C libcxx-build docs-libcxx-html164 mkdir built-docs/libcxx165 cp -r libcxx-build/libcxx/docs/* built-docs/libcxx/166 - name: Build libc docs167 if: |168 steps.docs-changed-subprojects.outputs.libc_any_changed == 'true' ||169 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'170 run: |171 cmake -B libc-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" -DLLVM_ENABLE_SPHINX=ON ./runtimes172 TZ=UTC ninja -C libc-build docs-libc-html173 mkdir built-docs/libc174 cp -r libc-build/libc/docs/* built-docs/libc/175 - name: Build LLD docs176 if: |177 steps.docs-changed-subprojects.outputs.lld_any_changed == 'true' ||178 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'179 run: |180 cmake -B lld-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="lld" -DLLVM_ENABLE_SPHINX=ON ./llvm181 TZ=UTC ninja -C lld-build docs-lld-html182 mkdir built-docs/lld183 cp -r lld-build/docs/* built-docs/lld/184 - name: Build OpenMP docs185 if: |186 steps.docs-changed-subprojects.outputs.openmp_any_changed == 'true' ||187 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'188 run: |189 cmake -B openmp-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;openmp" -DLLVM_ENABLE_SPHINX=ON ./llvm190 TZ=UTC ninja -C openmp-build docs-openmp-html191 mkdir built-docs/openmp192 cp -r openmp-build/docs/* built-docs/openmp/193 - name: Build Polly docs194 if: |195 steps.docs-changed-subprojects.outputs.polly_any_changed == 'true' ||196 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'197 run: |198 cmake -B polly-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="polly" -DLLVM_ENABLE_SPHINX=ON ./llvm199 TZ=UTC ninja -C polly-build docs-polly-html docs-polly-man200 mkdir built-docs/polly201 cp -r polly-build/docs/* built-docs/polly/202 - name: Build Flang docs203 if: |204 steps.docs-changed-subprojects.outputs.flang_any_changed == 'true' ||205 steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'206 run: |207 cmake -B flang-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;mlir;flang" -DLLVM_ENABLE_SPHINX=ON ./llvm208 TZ=UTC ninja -C flang-build docs-flang-html docs-flang-man209 mkdir built-docs/flang210 cp -r flang-build/docs/* built-docs/flang/211 - name: Upload docs212 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0213 with:214 name: docs-output215 path: built-docs/216