Add a rebase step after checkout for the documentation build CI run. This is in line with what pretty much all other workfloww already do, and means that if a PR is opened on a broken tree and the breakage get fixed, the PR run just have to be retried for the test to pass and we don't have to ask the authors to rebase and lose any pending approvals. Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
194 lines
5.1 KiB
YAML
194 lines
5.1 KiB
YAML
# Copyright (c) 2020 Linaro Limited.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
name: Documentation Build
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '0 */3 * * *'
|
|
push:
|
|
tags:
|
|
- v*
|
|
pull_request:
|
|
paths:
|
|
- 'doc/**'
|
|
- '**.rst'
|
|
- 'include/**'
|
|
- 'kernel/include/kernel_arch_interface.h'
|
|
- 'lib/libc/**'
|
|
- 'subsys/testsuite/ztest/include/**'
|
|
- 'tests/**'
|
|
- '**/Kconfig*'
|
|
- 'west.yml'
|
|
- '.github/workflows/doc-build.yml'
|
|
- 'scripts/dts/**'
|
|
- 'doc/requirements.txt'
|
|
|
|
env:
|
|
# NOTE: west docstrings will be extracted from the version listed here
|
|
WEST_VERSION: 1.0.0
|
|
# The latest CMake available directly with apt is 3.18, but we need >=3.20
|
|
# so we fetch that through pip.
|
|
CMAKE_VERSION: 3.20.5
|
|
DOXYGEN_VERSION: 1.9.6
|
|
|
|
jobs:
|
|
doc-build-html:
|
|
name: "Documentation Build (HTML)"
|
|
runs-on: zephyr-runner-linux-x64-4xlarge
|
|
timeout-minutes: 45
|
|
concurrency:
|
|
group: doc-build-html-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
fetch-depth: 0
|
|
|
|
- name: Rebase
|
|
continue-on-error: true
|
|
env:
|
|
BASE_REF: ${{ github.base_ref }}
|
|
PR_HEAD: ${{ github.event.pull_request.head.sha }}
|
|
run: |
|
|
git config --global user.email "actions@zephyrproject.org"
|
|
git config --global user.name "Github Actions"
|
|
git rebase origin/${BASE_REF}
|
|
git log --graph --oneline HEAD...${PR_HEAD}
|
|
|
|
- name: install-pkgs
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ninja-build graphviz
|
|
wget --no-verbose "https://github.com/doxygen/doxygen/releases/download/Release_${DOXYGEN_VERSION//./_}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz"
|
|
tar xf doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz
|
|
echo "${PWD}/doxygen-${DOXYGEN_VERSION}/bin" >> $GITHUB_PATH
|
|
|
|
- name: cache-pip
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: pip-${{ hashFiles('doc/requirements.txt') }}
|
|
|
|
- name: install-pip
|
|
run: |
|
|
sudo pip3 install -U setuptools wheel pip
|
|
pip3 install -r doc/requirements.txt
|
|
pip3 install west==${WEST_VERSION}
|
|
pip3 install cmake==${CMAKE_VERSION}
|
|
|
|
- name: west setup
|
|
run: |
|
|
west init -l .
|
|
|
|
- name: build-docs
|
|
shell: bash
|
|
run: |
|
|
if [[ "$GITHUB_REF" =~ "refs/tags/v" ]]; then
|
|
DOC_TAG="release"
|
|
else
|
|
DOC_TAG="development"
|
|
fi
|
|
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
|
DOC_TARGET="html-fast"
|
|
else
|
|
DOC_TARGET="html"
|
|
fi
|
|
|
|
DOC_TAG=${DOC_TAG} SPHINXOPTS_EXTRA="-q -t publish" make -C doc ${DOC_TARGET}
|
|
|
|
- name: compress-docs
|
|
run: |
|
|
tar cfJ html-output.tar.xz --directory=doc/_build html
|
|
|
|
- name: upload-build
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: html-output
|
|
path: html-output.tar.xz
|
|
|
|
- name: process-pr
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
REPO_NAME="${{ github.event.repository.name }}"
|
|
PR_NUM="${{ github.event.pull_request.number }}"
|
|
DOC_URL="https://builds.zephyrproject.io/${REPO_NAME}/pr/${PR_NUM}/docs/"
|
|
|
|
echo "${PR_NUM}" > pr_num
|
|
echo "Documentation will be available shortly at: ${DOC_URL}" >> $GITHUB_STEP_SUMMARY
|
|
|
|
- name: upload-pr-number
|
|
uses: actions/upload-artifact@v3
|
|
if: github.event_name == 'pull_request'
|
|
with:
|
|
name: pr_num
|
|
path: pr_num
|
|
|
|
doc-build-pdf:
|
|
name: "Documentation Build (PDF)"
|
|
if: github.event_name != 'pull_request'
|
|
runs-on: zephyr-runner-linux-x64-4xlarge
|
|
container: texlive/texlive:latest
|
|
timeout-minutes: 60
|
|
concurrency:
|
|
group: doc-build-pdf-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: install-pkgs
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y python3-pip python3-venv ninja-build doxygen graphviz librsvg2-bin
|
|
|
|
- name: cache-pip
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: pip-${{ hashFiles('doc/requirements.txt') }}
|
|
|
|
- name: setup-venv
|
|
run: |
|
|
python3 -m venv .venv
|
|
. .venv/bin/activate
|
|
echo PATH=$PATH >> $GITHUB_ENV
|
|
|
|
- name: install-pip
|
|
run: |
|
|
pip3 install -U setuptools wheel pip
|
|
pip3 install -r doc/requirements.txt
|
|
pip3 install west==${WEST_VERSION}
|
|
pip3 install cmake==${CMAKE_VERSION}
|
|
|
|
- name: west setup
|
|
run: |
|
|
west init -l .
|
|
|
|
- name: build-docs
|
|
shell: bash
|
|
continue-on-error: true
|
|
run: |
|
|
if [[ "$GITHUB_REF" =~ "refs/tags/v" ]]; then
|
|
DOC_TAG="release"
|
|
else
|
|
DOC_TAG="development"
|
|
fi
|
|
|
|
DOC_TAG=${DOC_TAG} SPHINXOPTS="-q -j auto" LATEXMKOPTS="-quiet -halt-on-error" make -C doc pdf
|
|
|
|
- name: upload-build
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: pdf-output
|
|
if-no-files-found: ignore
|
|
path: |
|
|
doc/_build/latex/zephyr.pdf
|
|
doc/_build/latex/zephyr.log
|