feat: Test ITF QEMU plugin with Ubuntu image - #135
Conversation
Ubuntu is a popular Linux distribution, and it is useful to be able to run integration tests on it.
a9ad16b to
cbc4420
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new Ubuntu (x86_64) QEMU image build flow and a basic connectivity test to validate the ITF QEMU plugin against an Ubuntu cloud image, alongside refactoring the existing Ebclfsa image build into shared scripts.
Changes:
- Introduces Bazel resources + a genrule to build a customized Ubuntu 24.04 minimal cloud image for QEMU-based ITF integration tests.
- Adds a reusable ping integration test and wires it up for both Ebclfsa (aarch64) and Ubuntu (x86_64) QEMU targets.
- Adds/exports image build helper scripts (Ubuntu + Ebclfsa) and updates docs, CI dependencies, and Bazel module downloads accordingly.
Reviewed changes
Copilot reviewed 12 out of 14 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| test/resources/ubuntu_x86_64/qemu_config.json | Adds QEMU runtime configuration for the Ubuntu x86_64 target (network/CPU/RAM/machine). |
| test/resources/ubuntu_x86_64/cloud-init/user-data | Cloud-init template to configure networking + SSH access for the Ubuntu test image. |
| test/resources/ubuntu_x86_64/cloud-init/meta-data | Cloud-init metadata for the NoCloud seed used during the one-time customization boot. |
| test/resources/ubuntu_x86_64/BUILD | Bazel genrule/filegroups to build and expose the Ubuntu ITF-ready QEMU rootfs image. |
| test/resources/ebclfsa_aarch64/BUILD | Switches the Ebclfsa image build genrule to a shared script under //scripts. |
| test/integration/test_ping.py | Adds a shared ping-based integration test for QEMU targets. |
| test/integration/BUILD | Reuses test_ping.py for Ebclfsa and adds a new Ubuntu ping test target and suite membership. |
| scripts/render_user_data.py | Renders cloud-init user-data by injecting IP/gateway from qemu_config.json. |
| scripts/build_ubuntu_x86_64_image.sh | Builds a customized Ubuntu cloud image via a one-time QEMU + cloud-init boot. |
| scripts/build_ebclfsa_aarch64_image.sh | Shared Ebclfsa image customization/deployment helper script. |
| scripts/BUILD | Exports the new scripts so they can be referenced from Bazel rules. |
| README.md | Documents Linux QEMU image build flows and updates the QEMU test invocation example. |
| MODULE.bazel | Adds a pinned Ubuntu 24.04 minimal cloud image download for reproducible Bazel builds. |
| .github/workflows/itf.yml | Updates CI dependencies to include x86 QEMU and cloud image utilities. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Also add using Linux QEMU images to README
e422384 to
7382eeb
Compare
ltekieli
left a comment
There was a problem hiding this comment.
Image builds are out of scope of ITF.
|
@ltekieli Do we already have a repo where I can put the build scripts? |
e36556d to
cad85ed
Compare
|
I thoguht this one? https://github.com/eclipse-score/os_images In general ITF should receive generic code that can be used across all possible usages. Plugins specific to a particular image implementation should live close to this image or it's usage. When external plugins mature, the generic parts should be extracted and can be put to ITF repo. |
Ubuntu is a popular Linux distribution, and it is useful to be able to run integration tests on it.
Next PR will take care of copying data onto the QEMU images: elektrobit-contrib#2. This code is used / tested at eclipse-score/inc_someip_gateway#177