@@ -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.
new file mode 100644
@@ -0,0 +1,19 @@
+# This software is a part of Isar.
+# Copyright (C) 2023-2024 ilbers GmbH
+
+header:
+ version: 14
+
+build_system: isar
+
+repos:
+ isar:
+ layers:
+ meta:
+ meta-isar:
+ meta-test:
+
+bblayers_conf_header:
+ standard: |
+ BBPATH = "${TOPDIR}"
+ BBFILES ?= ""
@@ -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
new file mode 100755
@@ -0,0 +1,12 @@
+#!/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})/..)
+
+cd ${topdir}
+kas/kas-container shell --command /work/scripts/ci_setup.sh kas/ci-shell.yml
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 a simple kas fragment (`kas/ci-shell.yml`) to use your existing copy of the Isar code checkout: 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 +++++++++++---------------------------------- kas/ci-shell.yml | 19 +++++++++++++++++ scripts/ci_setup.sh | 32 +++++++++++++++++++++++----- scripts/ci_shell | 12 +++++++++++ 4 files changed, 70 insertions(+), 45 deletions(-) create mode 100644 kas/ci-shell.yml create mode 100755 scripts/ci_shell