From: "'MOESSBAUER, Felix' via isar-users" <isar-users@googlegroups.com>
To: "isar-users@googlegroups.com" <isar-users@googlegroups.com>,
"Kiszka, Jan" <jan.kiszka@siemens.com>,
"Hombourger, Cedric" <cedric.hombourger@siemens.com>,
"ibr@ilbers.de" <ibr@ilbers.de>, "wzh@ilbers.de" <wzh@ilbers.de>
Subject: Re: [PATCH v3 1/1] test: provide ci_shell as a convenience wrapper
Date: Fri, 12 Dec 2025 10:55:51 +0000 [thread overview]
Message-ID: <faa07e9c6ea515e727ea346338b340bd399114d6.camel@siemens.com> (raw)
In-Reply-To: <01d937a1-5778-4470-9d6a-2706cf8fd47c@siemens.com>
On Fri, 2025-12-12 at 11:49 +0100, 'Jan Kiszka' via isar-users wrote:
> On 03.11.25 18:11, 'Cedric Hombourger' via isar-users wrote:
> > Ease use of the container environment that may be used to run
> > tests from this project by adding a `scripts/ci_shell` script
> > to invoke `kas-container` for you. The script uses the existing
> > kas/isar.yml kas file to use your existing checkout of the Isar
> > code: this makes it easier to test your work-in-progress changes.
> >
> > Lastly, `ci_setup.sh` will produce less output (e.g. when
> > installing dependencies) and will print a few hints to remind
> > users with useful commands.
> >
> > Signed-off-by: Cedric Hombourger <cedric.hombourger@siemens.com>
> > ---
> > CONTRIBUTING.md | 52 +++++++++++----------------------------------
> > scripts/ci_setup.sh | 32 +++++++++++++++++++++++-----
> > scripts/ci_shell | 18 ++++++++++++++++
> > 3 files changed, 57 insertions(+), 45 deletions(-)
> > create mode 100755 scripts/ci_shell
> >
> > diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
> > index 07621232..6970477b 100644
> > --- a/CONTRIBUTING.md
> > +++ b/CONTRIBUTING.md
> > @@ -81,54 +81,26 @@ Plan merges to `master` so that both fit the two-week window; short extensions s
> > by launching CI tests scripts. The procedure is described below:
> >
> > ```
> > - git clone https://github.com/siemens/kas
> > - cat > kas.yml <<EOF
> > - header:
> > - version: 14
> > - build_system: isar
> > - defaults:
> > - repos:
> > - patches:
> > - repo: isar
> > - repos:
> > - isar:
> > - url: "http://github.com:/ilbers/isar"
> > - branch: next
> > - layers:
> > - meta:
> > - meta-isar:
> > - EOF
> > - kas/kas-container shell --command /work/isar/scripts/ci_setup.sh kas.yml
> > + ./scripts/ci_shell
> > ```
> >
> > - In kas shell:
> > + This will spawn a shell where you may just run:
> >
> > ```
> > - cd /work/isar/testsuite
> > - avocado run citest.py -t dev --max-parallel-tasks=1
> > + trun citest.py -t dev --max-parallel-tasks=1
> > ```
> >
> > - Your git-formatpatches may be listed in the `kas.yml` file as illustrated below:
> > + Note: (`trun` is an alias for `avocado run`).
> >
> > - ```
> > - ...
> > - repos:
> > - isar:
> > - url: "http://github.com:/ilbers/isar"
> > - branch: next
> > - patches:
> > - 0001:
> > - path: /work/0001-my-contribution-to-isar.patch
> > - layers:
> > - meta:
> > - meta-isar:
> > - ```
> > -
> > - Perform the above steps from a clean directory for your CI run to be as close as
> > - possible to the environment that our project maintainers will be using. That
> > - directory would contain: *.patch isar/ kas/ kas.yml
> > + The container has `/work` bind-mounted to your local copy of the Isar code
> > + base (and therefore with your changes). Make sure to track upstream changes
> > + and regularly rebase your tree: your patches shall be sent against the latest
> > + HEAD available when submitting. Keep an eye on changes while your series are
> > + under review: you may need to send a refreshed version if contributions from
> > + others were accepted and touch the same areas (make sure to re-run the test
> > + suite after rebasing).
> >
> > - Be also mindful of community-provided resources such as deb.debian.org or
> > + Be mindful of community-provided resources such as deb.debian.org or
> > snapshot.debian.org and consider using a caching proxy in your setup to
> > reduce traffic as much as possible.
> >
> > diff --git a/scripts/ci_setup.sh b/scripts/ci_setup.sh
> > index f373d1c0..03cf3452 100755
> > --- a/scripts/ci_setup.sh
> > +++ b/scripts/ci_setup.sh
> > @@ -9,24 +9,46 @@ gpg_key=/etc/apt/trusted.gpg.d/debian-isar.gpg
> > [ -f "${gpg_key}" ] || {
> > wget -q http://deb.isar-build.org/debian-isar.key -O- \
> > | gpg --dearmor \
> > - | sudo dd of="${gpg_key}"
> > + | sudo dd of="${gpg_key}" status=none
> > }
> >
> > list=/etc/apt/sources.list.d/10-isar_build.list
> > [ -f "${list}" ] || {
> > echo "deb [signed-by=/etc/apt/trusted.gpg.d/debian-isar.gpg] \
> > http://deb.isar-build.org/debian-isar bookworm-isar main" \
> > - | sudo tee /etc/apt/sources.list.d/10-isar_build.list
> > + | sudo tee /etc/apt/sources.list.d/10-isar_build.list >/dev/null
> > }
> >
> > +echo "🔍 Checking dependencies..."
> > tools="avocado qemu-system-aarch64 qemu-system-arm qemu-system-i386 qemu-system-x86_64"
> > need_install=0
> > for tool in ${tools}; do
> > which "${tool}" || need_install=1
> > done
> > [ "${need_install}" = "0" ] || {
> > - sudo apt-get update
> > - sudo apt-get install -y avocado qemu-system-arm qemu-system-x86
> > + echo "⏳ Installing missing dependencies..."
> > + (
> > + sudo apt-get update
> > + sudo apt-get install -y avocado qemu-system-arm qemu-system-x86
> > + ) >/dev/null
> > }
> >
> > -exec /container-entrypoint ${*}
> > +(
> > + cat <<' EOF'
> > + alias tlist="avocado list"
> > + alias trun="avocado run"
> > + cd /work/testsuite
> > + EOF
> > +) | sudo tee -a /etc/profile.d/ci.sh >/dev/null
> > +
> > +cat <<'EOF'
> > +
> > +💡 Use "tlist citest.py" to list existing test cases
> > +💡 Use "trun citest.py:TestClass.test_method" to run a specific test
> > +💡 Use "trun -p sstate=1 citest.py" to enable sstate
> > +
> > +✅ Test environment ready for use!
> > +
> > +EOF
> > +
> > +exec /container-entrypoint bash -l
> > diff --git a/scripts/ci_shell b/scripts/ci_shell
> > new file mode 100755
> > index 00000000..9481a8ef
> > --- /dev/null
> > +++ b/scripts/ci_shell
> > @@ -0,0 +1,18 @@
> > +#!/bin/bash
> > +# A simple wrapper to run a container to run CI tests
> > +#
> > +# Cedric Hombourger <cedric.hombourger@siemens.com>
> > +# Copyright (c) Siemens AG, 2025
> > +# SPDX-License-Identifier: MIT
> > +
> > +self=${0}
> > +topdir=$(readlink -f $(dirname ${self})/..)
> > +
> > +export KAS_BUILD_DIR=$(mktemp -d)
> > +cleanup() {
> > + rm -rf --one-file-system ${KAS_BUILD_DIR}
> > +}
> > +trap "cleanup" EXIT
> > +
> > +cd ${topdir}
> > +kas/kas-container shell --command /work/scripts/ci_setup.sh kas/isar.yml
>
> It's isar.yaml by now - do you plan to update this patch?
I'm also looking into this and already have a couple of improvements to
the script. Will send them out today.
This also handles the stupid case of the generated bitbake
pyshtables.py that break the test if bitbake ever was locally executed.
>
> I'm still convinced we need this as workaround while we do not have
> pre-packaged test framework or test container. I would would even go
> further and think about forwarding parameters into the shell so that one
> could directly kick off a specific test.
For that, we need an up-to-date test container. Installing the
dependencies takes too long. But I would also like to see this.
>
> Also way more handy would be if the testsuite could be temporarily
> parameterized to reduce larger test cases to a setup which still
> triggers the issue, just faster. This would allow to share the
> reproduction setup with patch contributor via a single line:
>
> call_avocado testname --test-parameters
>
> Testing must be thought more from the contributor perspective, less the
> (existing) infrastructure.
Agree.
PS: Can we please make caching the default? All tests should be
executed with ccache, sstate cache and download cache per default. Only
tests that explicitly check these features should diverge.
Felix
>
> Jan
>
> --
> Siemens AG, Foundational Technologies
> Linux Expert Center
>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/isar-users/01d937a1-5778-4470-9d6a-2706cf8fd47c%40siemens.com.
--
Siemens AG
Linux Expert Center
Friedrich-Ludwig-Bauer-Str. 3
85748 Garching, Germany
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/faa07e9c6ea515e727ea346338b340bd399114d6.camel%40siemens.com.
prev parent reply other threads:[~2025-12-12 10:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-03 17:11 [PATCH v3 0/1] " 'Cedric Hombourger' via isar-users
2025-11-03 17:11 ` [PATCH v3 1/1] " 'Cedric Hombourger' via isar-users
2025-12-12 10:49 ` 'Jan Kiszka' via isar-users
2025-12-12 10:55 ` 'MOESSBAUER, Felix' via isar-users [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=faa07e9c6ea515e727ea346338b340bd399114d6.camel@siemens.com \
--to=isar-users@googlegroups.com \
--cc=cedric.hombourger@siemens.com \
--cc=felix.moessbauer@siemens.com \
--cc=ibr@ilbers.de \
--cc=jan.kiszka@siemens.com \
--cc=wzh@ilbers.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox