Skip to content

Commit 0a9c763

Browse files
kartbencfriedt
authored andcommitted
ci: workflows: doc: use self-hosted runner
Running full documentation build on GH hosted runners is not really working for us anymore as we run out of disk space. Switch (back) to our self-hosted runners. Signed-off-by: Benjamin Cabé <[email protected]>
1 parent fea720c commit 0a9c763

File tree

1 file changed

+58
-54
lines changed

1 file changed

+58
-54
lines changed

.github/workflows/doc-build.yml

Lines changed: 58 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ permissions:
1717
env:
1818
DOXYGEN_VERSION: 1.14.0
1919
DOXYGEN_MD5SUM: e761a5097ae20ecccfd02041925f102a
20-
JOB_COUNT: 4
20+
JOB_COUNT: 8
2121

2222
jobs:
2323
doc-file-check:
@@ -56,71 +56,76 @@ jobs:
5656
needs: [doc-file-check]
5757
if: >
5858
needs.doc-file-check.outputs.file_check == 'true' || github.event_name != 'pull_request'
59-
runs-on: ubuntu-24.04
60-
timeout-minutes: 90
59+
runs-on:
60+
group: zephyr-runner-v2-linux-x64-4xlarge
61+
container:
62+
image: ghcr.io/zephyrproject-rtos/ci-repo-cache:v0.28.5.20250930
63+
options: '--entrypoint /bin/bash'
64+
timeout-minutes: 20
6165
concurrency:
6266
group: doc-build-html-${{ github.ref }}
6367
cancel-in-progress: true
68+
env:
69+
BASE_REF: ${{ github.base_ref }}
70+
6471

6572
steps:
66-
- name: install-pkgs
73+
74+
- name: Print cloud service information
6775
run: |
68-
sudo apt-get update
69-
sudo apt-get install -y wget python3-pip git ninja-build graphviz lcov
70-
wget --no-verbose "https://github.com/doxygen/doxygen/releases/download/Release_${DOXYGEN_VERSION//./_}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz"
71-
echo "${DOXYGEN_MD5SUM} doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz" | md5sum -c
72-
if [ $? -ne 0 ]; then
73-
echo "Failed to verify doxygen tarball"
74-
exit 1
75-
fi
76-
sudo tar xf doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz -C /opt
77-
echo "/opt/doxygen-${DOXYGEN_VERSION}/bin" >> $GITHUB_PATH
78-
echo "${HOME}/.local/bin" >> $GITHUB_PATH
76+
echo "ZEPHYR_RUNNER_CLOUD_PROVIDER = ${ZEPHYR_RUNNER_CLOUD_PROVIDER}"
77+
echo "ZEPHYR_RUNNER_CLOUD_NODE = ${ZEPHYR_RUNNER_CLOUD_NODE}"
78+
echo "ZEPHYR_RUNNER_CLOUD_POD = ${ZEPHYR_RUNNER_CLOUD_POD}"
7979
80-
- name: checkout
80+
- name: Apply container owner mismatch workaround
81+
run: |
82+
# FIXME: The owner UID of the GITHUB_WORKSPACE directory may not
83+
# match the container user UID because of the way GitHub
84+
# Actions runner is implemented. Remove this workaround when
85+
# GitHub comes up with a fundamental fix for this problem.
86+
git config --global --add safe.directory ${GITHUB_WORKSPACE}
87+
88+
- name: Clone cached Zephyr repository
89+
continue-on-error: true
90+
run: |
91+
git clone --shared /repo-cache/zephyrproject/zephyr .
92+
git remote set-url origin ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}
93+
94+
- name: Checkout
8195
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
8296
with:
8397
ref: ${{ github.event.pull_request.head.sha }}
8498
fetch-depth: 0
85-
path: zephyr
8699

87-
- name: Rebase
88-
if: github.event_name == 'pull_request'
89-
continue-on-error: true
90-
env:
91-
BASE_REF: ${{ github.base_ref }}
92-
PR_HEAD: ${{ github.event.pull_request.head.sha }}
93-
working-directory: zephyr
100+
- name: Environment Setup
94101
run: |
95-
git config --global user.email "[email protected]"
96-
git config --global user.name "Github Actions"
97-
rm -fr ".git/rebase-apply"
98-
rm -fr ".git/rebase-merge"
99-
git rebase origin/${BASE_REF}
100-
git clean -f -d
101-
git log --graph --oneline HEAD...${PR_HEAD}
102+
if [ "${{github.event_name}}" = "pull_request" ]; then
103+
git config --global user.email "[email protected]"
104+
git config --global user.name "Zephyr Builder"
105+
rm -fr ".git/rebase-apply"
106+
rm -fr ".git/rebase-merge"
107+
git rebase origin/${BASE_REF}
108+
git clean -f -d
109+
git log --pretty=oneline | head -n 10
110+
fi
111+
echo "$HOME/.local/bin" >> $GITHUB_PATH
112+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
102113
103-
- name: Set up Python
104-
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
105-
with:
106-
python-version: 3.12
107-
cache: pip
108-
cache-dependency-path: doc/requirements.txt
114+
west init -l . || true
115+
west config manifest.group-filter -- +ci,+optional
116+
west config --global update.narrow true
117+
west update --path-cache /repo-cache/zephyrproject 2>&1 1> west.update.log || west update --path-cache /repo-cache/zephyrproject 2>&1 1> west.update.log || ( rm -rf ../modules ../bootloader ../tools && west update --path-cache /repo-cache/zephyrproject)
118+
west forall -c 'git reset --hard HEAD'
109119
110-
- name: Setup Zephyr project
111-
uses: zephyrproject-rtos/action-zephyr-setup@c125c5ebeeadbd727fa740b407f862734af1e52a # v1.0.9
112-
with:
113-
app-path: zephyr
114-
toolchains: 'all'
120+
echo "ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-$( cat SDK_VERSION )" >> $GITHUB_ENV
115121
116-
- name: install-pip
117-
working-directory: zephyr
122+
- name: Install Python packages required for documentation build
118123
run: |
124+
pip install -r scripts/requirements-actions.txt --require-hashes
119125
pip install -r doc/requirements.txt --require-hashes
120126
121-
- name: build-docs
127+
- name: Build HTML documentation
122128
shell: bash
123-
working-directory: zephyr
124129
run: |
125130
if [[ "$GITHUB_REF" =~ "refs/tags/v" ]]; then
126131
DOC_TAG="release"
@@ -145,27 +150,26 @@ jobs:
145150
lcov --remove doc-coverage.info \*/deprecated > new.info
146151
genhtml --no-function-coverage --no-branch-coverage new.info -o coverage-report
147152
148-
- name: compress-docs
149-
working-directory: zephyr
153+
- name: Compress documentation build artifacts
150154
run: |
151155
tar --use-compress-program="xz -T0" -cf html-output.tar.xz --exclude html/_sources --exclude html/doxygen/xml --directory=doc/_build html
152156
tar --use-compress-program="xz -T0" -cf api-output.tar.xz --directory=doc/_build html/doxygen/html
153157
tar --use-compress-program="xz -T0" -cf api-coverage.tar.xz coverage-report
154158
155-
- name: upload-build
159+
- name: Upload HTML output
156160
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
157161
with:
158162
name: html-output
159-
path: zephyr/html-output.tar.xz
163+
path: html-output.tar.xz
160164

161-
- name: upload-api-coverage
165+
- name: Upload Doxygen coverage artifacts
162166
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
163167
with:
164168
name: api-coverage
165-
path: zephyr/api-coverage.tar.xz
169+
path: api-coverage.tar.xz
166170

167171

168-
- name: process-pr
172+
- name: Summarize PR documentation URLs
169173
if: github.event_name == 'pull_request'
170174
run: |
171175
REPO_NAME="${{ github.event.repository.name }}"
@@ -179,7 +183,7 @@ jobs:
179183
echo "API Documentation will be available shortly at: ${API_DOC_URL}" >> $GITHUB_STEP_SUMMARY
180184
echo "API Coverage Report will be available shortly at: ${API_COVERAGE_URL}" >> $GITHUB_STEP_SUMMARY
181185
182-
- name: upload-pr-number
186+
- name: Upload PR number
183187
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
184188
if: github.event_name == 'pull_request'
185189
with:

0 commit comments

Comments
 (0)