[libcamera-ci] [RFC PATCH v1 2/3] Separate the building and running of unit tests

Barnabás Pőcze barnabas.pocze at ideasonboard.com
Thu Dec 12 19:16:54 CET 2024


The built artifacts will be reused in a later job, so split
the "test-unit" into the "build-test" and "test-unit" jobs.

The `libevent` development package cannot be installed in the container
directly because it is not multiarch compatible. It is, however, installed
in the architecture specific build jobs, right before building. To ensure
that the it is available for already built executables in different jobs,
install just the libraries in the container.

Signed-off-by: Barnabás Pőcze <barnabas.pocze at ideasonboard.com>
---
 .gitlab-ci/setup-container.sh |  3 +++
 gitlab-ci.yml                 | 42 +++++++++++++++++++++++------------
 2 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/.gitlab-ci/setup-container.sh b/.gitlab-ci/setup-container.sh
index d2909c7..0658368 100755
--- a/.gitlab-ci/setup-container.sh
+++ b/.gitlab-ci/setup-container.sh
@@ -103,6 +103,9 @@ case $FDO_DISTRIBUTION_VERSION in
 'bookworm')
 	# libclang-rt-dev for the clang ASan runtime.
 	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libclang-rt-dev )
+	# For cam and lc-compliance
+	# libevent-dev cannot be used here, see build-libcamera-common.sh
+	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libevent-2.1-7 libevent-pthreads-2.1-7 )
 	;;
 'trixie')
 	# gcc 13 to expand compilation testing coverage.
diff --git a/gitlab-ci.yml b/gitlab-ci.yml
index 8bc8bc2..c7448b8 100644
--- a/gitlab-ci.yml
+++ b/gitlab-ci.yml
@@ -64,7 +64,7 @@ include:
 .libcamera-ci.debian:12:
   variables:
     FDO_DISTRIBUTION_VERSION: 'bookworm'
-    FDO_DISTRIBUTION_TAG: '2024-12-12.1'
+    FDO_DISTRIBUTION_TAG: '2024-12-12.2'

 .libcamera-ci.debian:13:
   variables:
@@ -363,28 +363,18 @@ test-soraka:
   script:
     - submit .gitlab-ci/lava/soraka-camera-test.yml

-# Run the unit tests in a virtual machine. Enable only the options exercised by
-# the unit tests.
-test-unit:
+# Enable only the options exercised by the unit tests.
+build-test:debug:
   extends:
     - .fdo.distribution-image at debian
     - .libcamera-ci.debian:12
     - .libcamera-ci.scripts
-  stage: test
+  stage: build
   needs:
     - job: container-debian:12
       artifacts: false
-  tags:
-    - kvm
   script:
     - $CI_PROJECT_DIR/.gitlab-ci/build-libcamera.sh
-    - $CI_PROJECT_DIR/.gitlab-ci/test-libcamera-qemu.sh
-  artifacts:
-    name: libcamera-unit-tests-${CI_COMMIT_SHA}
-    when: always
-    expire_in: 1 week
-    paths:
-      - build/meson-logs/
   variables:
     BUILD_TYPE: debug
     MESON_OPTIONS: >-
@@ -399,6 +389,30 @@ test-unit:
       -D qcam=disabled
       -D test=true
       -D v4l2=true
+  artifacts:
+    paths:
+      - build/
+    expire_in: 1 day
+
+# Run the unit tests in a virtual machine.
+test-unit:
+  extends:
+    - .fdo.distribution-image at debian
+    - .libcamera-ci.debian:12
+    - .libcamera-ci.scripts
+  stage: test
+  needs:
+    - job: build-test:debug
+  tags:
+    - kvm
+  script:
+    - $CI_PROJECT_DIR/.gitlab-ci/test-libcamera-qemu.sh
+  artifacts:
+    name: libcamera-unit-tests-${CI_COMMIT_SHA}
+    when: always
+    expire_in: 1 week
+    paths:
+      - build/meson-logs/

   # meson prior to 1.2.0 doesn't correctly escape non-printable characters
   # when generating the testlog XML. This results in an unparseable file.
--
2.47.1


More information about the libcamera-devel mailing list