ci: use uv to install gcovr and sphinx
Change-Id: Ic62e62af43921f915fd07aea0d8e68d6ff153d88
diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh
index 21becbc..b94cec8 100755
--- a/.jenkins.d/00-deps.sh
+++ b/.jenkins.d/00-deps.sh
@@ -29,22 +29,27 @@
sqlite-devel
)
FORMULAE=(boost openssl pkgconf)
-PIP_PKGS=()
case $JOB_NAME in
*code-coverage)
- APT_PKGS+=(lcov python3-pip)
- PIP_PKGS+=('gcovr~=5.2')
+ APT_PKGS+=(lcov)
;;
*Docs)
- APT_PKGS+=(doxygen graphviz python3-pip)
+ APT_PKGS+=(doxygen graphviz)
FORMULAE+=(doxygen graphviz)
- PIP_PKGS+=(sphinx sphinxcontrib-doxylink)
;;
esac
+install_uv() {
+ if [[ -z $GITHUB_ACTIONS && $ID_LIKE == *debian* ]]; then
+ sudo apt-get install -qy --no-install-recommends pipx
+ pipx upgrade uv || pipx install uv
+ fi
+}
+
set -x
if [[ $ID == macos ]]; then
+ export HOMEBREW_COLOR=1
export HOMEBREW_NO_ENV_HINTS=1
if [[ -n $GITHUB_ACTIONS ]]; then
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
@@ -58,6 +63,14 @@
sudo dnf install -y "${DNF_PKGS[@]}"
fi
-if (( ${#PIP_PKGS[@]} )); then
- pip3 install --user --upgrade --upgrade-strategy=eager "${PIP_PKGS[@]}"
-fi
+case $JOB_NAME in
+ *code-coverage)
+ install_uv
+ ;;
+ *Docs)
+ install_uv
+ export FORCE_COLOR=1
+ export UV_NO_MANAGED_PYTHON=1
+ uv tool install sphinx --upgrade --with-requirements docs/requirements.txt
+ ;;
+esac
diff --git a/.jenkins.d/10-build.sh b/.jenkins.d/10-build.sh
index e6e505d..47fd2a8 100755
--- a/.jenkins.d/10-build.sh
+++ b/.jenkins.d/10-build.sh
@@ -4,7 +4,7 @@
if [[ -z $DISABLE_ASAN ]]; then
ASAN="--with-sanitizer=address"
fi
-if [[ $JOB_NAME == *"code-coverage" ]]; then
+if [[ $JOB_NAME == *code-coverage ]]; then
COVERAGE="--with-coverage"
fi
if [[ $ID == debian && ${VERSION_ID%%.*} -eq 11 ]]; then
@@ -13,7 +13,7 @@
set -x
-if [[ $JOB_NAME != *"code-coverage" && $JOB_NAME != *"limited-build" ]]; then
+if [[ $JOB_NAME != *code-coverage && $JOB_NAME != *limited-build ]]; then
# Build in release mode with tests
./waf --color=yes configure --with-tests
./waf --color=yes build
diff --git a/.jenkins.d/30-coverage.sh b/.jenkins.d/30-coverage.sh
index 236d441..b3f6954 100755
--- a/.jenkins.d/30-coverage.sh
+++ b/.jenkins.d/30-coverage.sh
@@ -1,30 +1,36 @@
#!/usr/bin/env bash
-set -exo pipefail
+set -eo pipefail
-if [[ $JOB_NAME == *"code-coverage" ]]; then
- # Generate an XML report (Cobertura format) and a detailed HTML report using gcovr
- # Note: trailing slashes are important in the paths below. Do not remove them!
- gcovr --object-directory build \
- --filter PSync/ \
- --exclude-throw-branches \
- --exclude-unreachable-branches \
- --cobertura build/coverage.xml \
- --html-details build/gcovr/ \
- --print-summary
+[[ $JOB_NAME == *code-coverage ]] || exit 0
- # Generate a detailed HTML report using lcov
- lcov --quiet \
- --capture \
- --directory . \
- --exclude "$PWD/tests/*" \
- --no-external \
- --rc lcov_branch_coverage=1 \
- --output-file build/coverage.info
+export FORCE_COLOR=1
+export UV_NO_MANAGED_PYTHON=1
- genhtml --branch-coverage \
- --demangle-cpp \
- --legend \
- --output-directory build/lcov \
- --title "PSync unit tests" \
- build/coverage.info
-fi
+set -x
+
+# Generate an XML report (Cobertura format) and a detailed HTML report using gcovr
+# Note: trailing slashes are important in the paths below. Do not remove them!
+uvx gcovr@5.2 \
+ --object-directory build \
+ --filter PSync/ \
+ --exclude-throw-branches \
+ --exclude-unreachable-branches \
+ --cobertura build/coverage.xml \
+ --html-details build/gcovr/ \
+ --print-summary
+
+# Generate a detailed HTML report using lcov
+lcov --quiet \
+ --capture \
+ --directory . \
+ --exclude "$PWD/tests/*" \
+ --no-external \
+ --rc lcov_branch_coverage=1 \
+ --output-file build/coverage.info
+
+genhtml --branch-coverage \
+ --demangle-cpp \
+ --legend \
+ --output-directory build/lcov \
+ --title "PSync unit tests" \
+ build/coverage.info