From patchwork Mon Mar 23 08:30:32 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 4971 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 23 Mar 2026 09:30:53 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wr1-f61.google.com (mail-wr1-f61.google.com [209.85.221.61]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 62N8UnCc028860 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 23 Mar 2026 09:30:49 +0100 Received: by mail-wr1-f61.google.com with SMTP id ffacd0b85a97d-43b40c22eaesf4218374f8f.2 for ; Mon, 23 Mar 2026 01:30:49 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1774254644; cv=pass; d=google.com; s=arc-20240605; b=VYaXJv45RVVQUVcZWGQRav6g8/1sCZH1p8u9e/Q7ZGqJs4fvVmpGYjwvXFOQ3aKOF1 PpKRYS5s/Sr9HoEcBTObmoAwsAohvfNDJpUdPmQBKJlAriorZmSV9T/09zCfFowA14Ce uUN79cHLLLSX4K/OV0qK0aL5YMMYPN0XK10ZR4f+cvIDF4tSYkpJX+1NNdpW7VzxHPrw EbIPG+532SGjEYBicbKJwFtoEfAmLDfmI9w0k70wkd5TG72WlSjNkmb1KIkjgosthBL5 s1LVNaqDZANCyNgAoeb8owdpwjNpDUYMcKUTVMVXjnVKY3aE4eszHU1GoMy61dxYOWiv fRuA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:feedback-id:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9prL+EscSUEDKbtdwe6UaizxWSLlG4YLVk5yjAcU5oc=; fh=6YJ+1jur8kf83jLo412RswmdSWSwrdpXZKYQwZnEkxo=; b=gtreNgkkhJRTQUAoZR8hJZ5+AnndEnXFw4Ub69QyNBOGCYDAsv7+u8/tQ2YEPAK1K3 bneqe1qJhyI16EnwNncuEb7Y7yywvZWNsRmR4R3HXIGSrf1ctiF80mV5UH8Mj58onE1Q 8vttqMYiG90m6ec6fkUHFbtF+zi4w4sf06vjSR3+SAVOqLoYb+/FiTjFIIyy+qZ92Z1n mjKiyKvEKTJ0ix3UUPQ7g1AuAV00yXj6o8evfnCxJzG3CyVp0Bmro6U8U8KPsL2HzQBL oxo5jWanDxURGyi2p7ztyLeB421VJ6/Vnthdv2qFtzsFUC0jgue5T+TUGKGwX2N2z/aZ +PSw==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=BIAltWED; spf=pass (google.com: domain of fm-294854-20260323083041192d54944d000207df-l5vxkn@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-294854-20260323083041192d54944d000207df-L5vXkn@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20251104; t=1774254644; x=1774859444; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=9prL+EscSUEDKbtdwe6UaizxWSLlG4YLVk5yjAcU5oc=; b=QuekrMmXsnSQ1UwnLEsvd0yZmU/q8BA9VO4vjM1PsEGBoEiOPQWlRM+I6kyXU/3box VAtjMJDPnuAT+gZ/hrtUnqaSxyrh7hxSWsTOVGcYaUkNEYsZBtPScdRIGiPAwIybChCG 9DqtQVHADNYVlWr9jpTCvNh7SxL3jCk8M1CR7T7KkJhuEfz4kFpq3UR+CnBTB3vPXoqv tMQ43tlweIWgJ6OWp9ytrK6iIvvtz3bgByDa+rLxZGcRGsJ3PCmcUvYRvSXTw5lrwnQI PRj2T/P7Mcvka3Q5lDH0XBp5IER87VtFHuamiP8BjJ1cQSWQxbuu1hSy9oD9lGjJYQ1D 33jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774254644; x=1774859444; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-beenthere:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9prL+EscSUEDKbtdwe6UaizxWSLlG4YLVk5yjAcU5oc=; b=sGyvKPAyIDDjzXWH+NKQ5GxhfNOeZHO6hRlgQmNv0tDB4e0NfO+Eg1vTPO8H1u/udb ICLCsyZvXeqXfyKwBoL4peiuPjQiDvks7W6zCIrTxm4i1C+L4Dzv+l2RE/9TU4hh7zaC qxYwkJ7zSTyCqRGX5Z26+eL5OySmNjEWuiEL3FOumhRuU16GdjfP1bLgy/6f7ugMabgK KPmOdKJ1VXcrAR+22UMI77YUTcmBr+MvKGpwgO+YrTwKudelhGGtm8e8mgtXZfoKsYhn 7HCfhFOXWddazqB7ehPJDjI+gT+AAEj1nG0rM4rreI1Nm7Sv+xXVEWQS4keMOsaZdruC IH/w== X-Forwarded-Encrypted: i=2; AJvYcCWPXonE6LdHVBIW5mWqWVNHgG34Tj3kab2Jx1i3/V1xEOGJIwnomI/66A9iCYAXLbp1Xnds0II=@isar-build.org X-Gm-Message-State: AOJu0Yyl2HYzCftQZMo7iE1EEwJb4r3jOo9avz4YEFhJuYL8/ODd7Jaz hvIGdBlyssUipP+6FHhZr/Q3KYGYYyh7MjlClAWV0AANEv3Qil3tQvKT X-Received: by 2002:a05:6000:2007:b0:43b:4e13:2213 with SMTP id ffacd0b85a97d-43b6428baa5mr18439735f8f.51.1774254643583; Mon, 23 Mar 2026 01:30:43 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="AYAyTiKCWt9+BDWjXUppVNGJXr4Ba4Fi+ILj8IBl9vdZWHumJw==" Received: by 2002:adf:9d8a:0:b0:439:8f85:db06 with SMTP id ffacd0b85a97d-43b585d840als2404860f8f.0.-pod-prod-01-eu; Mon, 23 Mar 2026 01:30:41 -0700 (PDT) X-Received: by 2002:a5d:590e:0:b0:43b:4352:1bd8 with SMTP id ffacd0b85a97d-43b6428ba33mr12444662f8f.53.1774254641468; Mon, 23 Mar 2026 01:30:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774254641; cv=none; d=google.com; s=arc-20240605; b=Pi33/ipmQpd9BNyUk8i7HaVJITS9vT7eiUAr2YOHXlwjC86ILtOJPHDSnJuxs131fT fCOraocAJIRJgzSPwXHLIWu6HzapsQHqOcTgfTlianSdYiCKVxtWIQLMaxUVKOXpJp1c CMXfoDVjfA2WwCMtUNiitDtsPVFlkIGY3R+ewaY3vL1uettUgCrhkkEtg9yHSQLzgDXK 6IiR2I1Vb1cT2+d4IqMAsq5CR39/sgxVVodk0pfa2/MDRtd3w+LZd8rAc6FdUZnaUamc t38Gg527qKLmP+HVabqHLA+qmfPgZo11KLaR6gKWVJ+dLv0hvfm7IycqN5rht3wXZO1/ kDOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=vXXketettU8K7vnURZDpF63Id2foCsnASX7ZnHLe/Og=; fh=TnBsgKgmUKR6lCgSnR10YW4SMYjU5gXEv4fxP/+RPug=; b=ex7bf19rYxKJaI3xeSqdPpVhuamI28WhGazTaCzGNHnD+cxgYJlndb3p79pNBIY7hY flCMbXGQQniYaSuSv1x+z4Bb1KchxFNtJVoyF3Rk/IxRT/iHWNzz/jlAw6rf8in9Get+ D62d3Nq3ecVsgcVV6b+2TloqDeuiKt1qoVbwzfgAxLWJQx+Ng8ElqxDwombPobwU7pVH BnQzWFZg+koj365ooAjSM4cMCNmigS/zhu5gxm7qk2hD2BHC5mgoNmmvtVEyrWUDApfN N8vtDOsqIdgNmciZgo0TZsbibEBp85U8zCPH7xpldPfB4esxbjkeR9JEUc+TRfDS4Y9H Jj6A==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=BIAltWED; spf=pass (google.com: domain of fm-294854-20260323083041192d54944d000207df-l5vxkn@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-294854-20260323083041192d54944d000207df-L5vXkn@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from mta-65-226.siemens.flowmailer.net (mta-65-226.siemens.flowmailer.net. [185.136.65.226]) by gmr-mx.google.com with ESMTPS id ffacd0b85a97d-43b644b7432si177037f8f.1.2026.03.23.01.30.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Mar 2026 01:30:41 -0700 (PDT) Received-SPF: pass (google.com: domain of fm-294854-20260323083041192d54944d000207df-l5vxkn@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) client-ip=185.136.65.226; Received: by mta-65-226.siemens.flowmailer.net with ESMTPSA id 20260323083041192d54944d000207df for ; Mon, 23 Mar 2026 09:30:41 +0100 X-Patchwork-Original-From: "'Jan Kiszka' via isar-users" From: Jan Kiszka To: isar-users Cc: Felix Moessbauer , Cedric Hombourger Subject: [PATCH 2/9] testsuite: Provide a new kas-based test container and wrapper script Date: Mon, 23 Mar 2026 09:30:32 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-294854:519-21489:flowmailer X-Original-Sender: jan.kiszka@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=BIAltWED; spf=pass (google.com: domain of fm-294854-20260323083041192d54944d000207df-l5vxkn@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-294854-20260323083041192d54944d000207df-L5vXkn@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Jan Kiszka Reply-To: Jan Kiszka Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-4.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_RP_CERTIFIED, RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jan Kiszka This reworks the current docker-isar container to test-container. Besides its new path and revisioning scheme, this container comes with its own entrypoint script. The script still builds on top of kas' container-entrypoint but avoids calling kas itself, thus entering a bitbake env in shell mode. When invoked via "kas-container shell", the new entrypoint builds up an environment to run the avocado testsuite against the Isar repo that is passed in, but that without modifying it. All testsuite results are directed to the build/testsuite folder, including all modifications which are kept in an overlay. This ensure a clean execution context for the testsuite. If the container is started without arguments, in continues to act as a basis for gitlab-ci job executions. The kas version used as baseline for test-container is now derived from the one used for interactive building as well. This avoid surprises due to the different versions. Signed-off-by: Jan Kiszka --- scripts/run-tests.sh | 18 ++++ testsuite/dockerdata/Dockerfile | 8 +- testsuite/dockerdata/README.md | 12 ++- testsuite/dockerdata/build.sh | 14 +++ .../dockerdata/test-container-entrypoint | 95 +++++++++++++++++++ testsuite/dockerdata/version | 1 + 6 files changed, 142 insertions(+), 6 deletions(-) create mode 100755 scripts/run-tests.sh create mode 100755 testsuite/dockerdata/build.sh create mode 100755 testsuite/dockerdata/test-container-entrypoint create mode 100644 testsuite/dockerdata/version diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh new file mode 100755 index 00000000..bce10d70 --- /dev/null +++ b/scripts/run-tests.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# Script to run testsuite inside the official test-container +# +# Copyright (c) Siemens AG, 2026 +# SPDX-License-Identifier: MIT + +ISAR_DIR=$(readlink -f $(dirname $0)/..) + +TEST_CONTAINER_VERSION=$(cat ${ISAR_DIR}/testsuite/dockerdata/version) + +# The way to do this after kas 5.2: +# export KAS_CONTAINER_IMAGE="${CONTAINER_BASENAME:-ghcr.io/ilbers/isar}/test-container:$TEST_CONTAINER_VERSION" +# +# For now: +export KAS_CONTAINER_IMAGE_DISTRO="container:$TEST_CONTAINER_VERSION" +export KAS_CONTAINER_IMAGE=${CONTAINER_BASENAME:-ghcr.io/ilbers/isar}/test + +${ISAR_DIR}/kas/kas-container --isar --repo-ro shell -c "$*" diff --git a/testsuite/dockerdata/Dockerfile b/testsuite/dockerdata/Dockerfile index 2a77798a..7b9cdaf6 100644 --- a/testsuite/dockerdata/Dockerfile +++ b/testsuite/dockerdata/Dockerfile @@ -1,4 +1,6 @@ -FROM ghcr.io/siemens/kas/kas-isar: +ARG KAS_VERSION=0 + +FROM ghcr.io/siemens/kas/kas-isar:${KAS_VERSION} ARG TARGETPLATFORM ARG DEBIAN_FRONTEND=noninteractive @@ -10,3 +12,7 @@ RUN sudo pip3 --proxy=$https_proxy install --break-system-packages avocado-frame sudo apt-get install -y -f --no-install-recommends python3-apt && \ sudo apt-get clean && \ sudo rm -rf $(pip3 cache dir) /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY testsuite/dockerdata/test-container-entrypoint / + +ENTRYPOINT ["/test-container-entrypoint"] diff --git a/testsuite/dockerdata/README.md b/testsuite/dockerdata/README.md index e6b76d25..54a78187 100644 --- a/testsuite/dockerdata/README.md +++ b/testsuite/dockerdata/README.md @@ -1,9 +1,12 @@ # Creating image +- Make sure `testsuite/dockerdata/version` is bumped for new images, also + after updating `kas/kas-container`. + +- Run: + ``` -export version="4.4" -cd /testsuite/dockerdata -sed "s/:/:${version}/" Dockerfile | docker build -t ghcr.io/ilbers/docker-isar:${version} - +testsuite/dockerdata/build.sh ``` # Pushing the image to docker hub @@ -13,8 +16,7 @@ sed "s/:/:${version}/" Dockerfile | docker build -t ghcr.io/ilbers/dock - Use it for uploading docker image: ``` -export version="4.4" -docker push ghcr.io/ilbers/docker-isar:${version} +docker push ghcr.io/ilbers/isar/test-container:$(cat testsuite/dockerdata/version) ``` - Make the uploaded package public diff --git a/testsuite/dockerdata/build.sh b/testsuite/dockerdata/build.sh new file mode 100755 index 00000000..7880d19f --- /dev/null +++ b/testsuite/dockerdata/build.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# Build kas-based test-container +# +# Copyright (c) Siemens AG, 2026 +# SPDX-License-Identifier: MIT + +ISAR_DIR=$(readlink -f $(dirname $0)/../..) + +eval $(grep "^KAS_CONTAINER_SCRIPT_VERSION=" ${ISAR_DIR}/kas/kas-container) +TEST_CONTAINER_VERSION=$(cat ${ISAR_DIR}/testsuite/dockerdata/version) + +docker build --file ${ISAR_DIR}/testsuite/dockerdata/Dockerfile \ + --build-arg KAS_VERSION=$KAS_CONTAINER_SCRIPT_VERSION \ + --tag ${CONTAINER_BASENAME:-ghcr.io/ilbers/isar}/test-container:$TEST_CONTAINER_VERSION ${ISAR_DIR} diff --git a/testsuite/dockerdata/test-container-entrypoint b/testsuite/dockerdata/test-container-entrypoint new file mode 100755 index 00000000..16f74124 --- /dev/null +++ b/testsuite/dockerdata/test-container-entrypoint @@ -0,0 +1,95 @@ +#!/bin/sh +# Alternative entrypoint for the kas-based test-container +# +# Copyright (c) Siemens AG, 2026 +# SPDX-License-Identifier: MIT + +if [ $# -eq 0 ]; then + exec /container-entrypoint +fi + +set -e + +# skip "shell [-c]" +if [ $# -gt 1 ]; then + shift 2 +else + shift 1 +fi + +export args="--max-parallel-tasks=1 --disable-sysinfo" +for arg in $*; do + case "$arg" in + --clean) + rm -rf /work/build/testsuite + ;; + --debug) + export showopt="--show=app,test" + ;; + --shell) + export start_shell=1 + ;; + --help) + cat < "${HOME}"/.config/avocado/avocado.conf +[datadir.paths] +base_dir = ${base_dir} +test_dir = ${base_dir}/tests +data_dir = ${base_dir}/data +logs_dir = ${base_dir}/job-results +EOF + +cd /isar + +if [ "${start_shell}" = 1 ]; then + bash +else + set -x + avocado ${showopt} run ${args} +fi +' diff --git a/testsuite/dockerdata/version b/testsuite/dockerdata/version new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/testsuite/dockerdata/version @@ -0,0 +1 @@ +1