Skip to content

Set up workflow to build just the documentation. #49

Set up workflow to build just the documentation.

Set up workflow to build just the documentation. #49

Workflow file for this run

# Copyright 2025 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
name: Build and Deploy Reference Pages and Other Documentation
# Ensure documentation builds on all platforms. Deploy from the Ubuntu build.
on:
# Trigger the workflow on a pull request,
pull_request:
push:
# And on pushes to main, which will occur when a PR is merged.
branches:
- main
# Also trigger on push of release tags to any branch. Useful
# for testing release builds before merging to main.
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
- 'v[0-9]+.[0-9]+.[0-9]+-*'
paths-ignore:
- .appveyor.yml
- .github/workflows/android.yml
- .github/workflows/check-mkvk.yml
- .github/workflows/formatting.yml
- .github/workflows/mingw.yml
- .github/workflows/publish-pyktx.yml
- .github/workflows/windows.yml
- .travis.yml
- README.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- LICENSE.md
- LICENSES
- RELEASE_NOTES.md
- REUSE.toml
- vcpkg.json
- vcpkg-configuration.json
# Allow manual trigger
workflow_dispatch:
jobs:
build-docs:
name: Build KTX-Software reference pages and documentation
strategy:
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
runs-on: ${{ matrix.os }}
env:
BUILD_DIR: build
GIT_LFS_SKIP_SMUDGE: 1
steps:
- uses: actions/checkout@v4
with:
# Fetch all history to make sure tags are
# included (used for version creation)
fetch-depth: 0
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11.4'
# virtualenv is no longer included as of 20240929.1 runner so
# install it ourselves. See
# https://github.com/actions/runner-images/issues/10749.
#
# Note that it is the builds of sdist and wheel that require virtualenv
# not the explicit dependencies of pyktx.
- name: Install Python virtualenv
run: pip install virtualenv
- name: Install Doxygen
uses: ssciwr/doxygen-install@v1
- name: Install Graphviz
uses: ts-graphviz/setup-graphviz@v2
- name: Smudge dates (macOS and Ubuntu)
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'
run: ./install-gitconfig.sh && scripts/smudge_date.sh
- name: Smudge dates (Windows)
if: matrix.os == 'windows-latest'
run: ./install-gitconfig.ps1 && scripts/smudge_date.ps1
- name: Build docs
run: |
echo "Doxygen version: $(doxygen --version)"
cmake -B ${{ env.BUILD_DIR }} -D KTX_FEATURE_DOC=ON -D KTX_FEATURE_PY=ON -D KTX_FEATURE_TESTS=OFF -D KTX_FEATURE_TOOLS=OFF
cmake --build ${{ env.BUILD_DIR }} --target all.doc
# - name: Patch .nojekyll
# Some files in the pyktx docs have an _ prefix so Jekyll will
# not copy them from the gh-pages branch to the website. This
# file says no Jekyll files here. Treat all as ordinary files.
# if: matrix.os == 'ubuntu-latest'
# run: touch ${{ env.BUILD_DIR }}/docs/html/.nojekyll
- name: Upload generated HTML documentation for GitHub Pages
if: matrix.os == 'ubuntu-latest'
id: deployment
uses: actions/upload-pages-artifact@v3
with:
path: ${{ env.BUILD_DIR }}/docs/html
# deploy:
# name: Deploy to GitHub Pages
# # Add a dependency to the build job
# needs: build-docs
# # Only deploy when building `main`.
# if: github.ref == 'refs/heads/main'
#
# runs-on: ubuntu-latest
#
# # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
# permissions:
# pages: write # to deploy to Pages
# id-token: write # to verify the deployment originates from an appropriate source
#
# # Deploy to the github-pages environment
# environment:
# name: github-pages
# url: ${{ steps.deployment.outputs.page_url }}
#
# # Specify deployment step
# steps:
# - name: Deploy to GitHub Pages
# id: deployment
# uses: actions/deploy-pages@v4