Skip to content

ci: add Linux aarch64 and QNX on-target tests, split build CI - #587

Draft
arkjedrz wants to merge 8 commits into
arkjedrz_tooling-07-sanitizersfrom
arkjedrz_tooling-08-multi-arch
Draft

arkjedrz wants to merge 8 commits into
arkjedrz_tooling-07-sanitizersfrom
arkjedrz_tooling-08-multi-arch

Conversation

@arkjedrz

Copy link
Copy Markdown
Contributor

Summary

  • Adds unit tests on Linux aarch64 (qemu-user) and on QNX targets (QNX VM in QEMU).
  • Replaces build.yml and check.yml with build_qnx.yml, build_linux.yml and cargo_required.yml.
  • Follows baselibs and the cicd-workflows reusable workflows.
  • Depends on #N (QNX test fixes). Merge #N first.

Changes

  • qemu.bzl (baselibs copy) and //:qemu_aarch64 run aarch64 tests under qemu-user.
  • New config score-linux-aarch64. Only cc and rust tests run there.
  • score_qnx_unit_tests 0.2.0 runs the unit tests on target for score-qnx-x86_64 and score-qnx-aarch64.
  • build_qnx.yml: calls cicd qnx-build.yml with one matrix entry per QNX config, build and test.
    Uses pull_request_target only, without the hand-written if:.
  • build_linux.yml: build and test on x86_64 and aarch64.
  • cargo_required.yml: cargo build and Bazel Miri (//:miri_tests).
  • rust-toolchain.toml pins Rust 1.90.0 for cargo.
  • All three workflows have workflow_call.
  • Removes check.yml. Coverage is already in coverage_report.yml.
  • Removes the RPi4 image test: qnx_integration_test.yml, integration_test_scenarios/, custom_qemu.

Notes

  • build_qnx.yml doesn't run on this PR (pull_request_target). After the merge, check it with gh workflow run build_qnx.yml --ref main.
  • Required checks in branch protection change names. For example, cargo-build becomes Cargo build, and the QNX checks become Build and Test score-qnx-* / Build QNX target.
  • On aarch64, 5 targets that use the score_logging 0.2.4 Rust log bridge are excluded from the build. The bridge doesn't support Linux aarch64.

Verification

  • Linux x86_64 and aarch64, QNX x86_64 and aarch64: build and unit tests pass.
  • Miri, sanitizers, coverage, format, copyright, pre-commit, actionlint and gitlint pass.

@arkjedrz arkjedrz self-assigned this Oct 26, 2026
@arkjedrz
arkjedrz added this pull request to stack #526 October 26, 2026 09:58
arkjedrz and others added 8 commits October 26, 2026 15:46
- Add qemu.bzl (copied from baselibs) with the qemu_aarch64 macro.
- Add the //:qemu_aarch64 wrapper target to the root BUILD.
- Add the score-linux-aarch64 config, tests run under qemu-user.
- Run only cc and rust tests on aarch64, CIT py_tests are host-only.
- Mention the config and the qemu-user requirement in the README.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- MODULE.bazel: add score_qnx_unit_tests 0.2.0 as dev dependency.
- score_toolchain.bazelrc: add the missing test: lines to both QNX
  configs (run_under, test_lang_filters, aarch64 test_timeout).
- MODULE.bazel.lock needs no change: the registry entries for
  score_qnx_unit_tests 0.2.0 are already recorded.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Rust: add test-only tempdir helper.
  On QNX it creates the directory in the cwd.
  QNX /tmp can't hold directories.
- C++: skip flush_failure_rotate_snapshots when run as root.
  Root ignores file permissions, so flush succeeds.
- C++: use ASSERT_FALSE so the test can't abort the binary.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Add Bazel Build (Linux) workflow with job linux-build-and-test.
- Build //... and test //score/... on x86_64.
- Build and test //score/... on aarch64 under qemu-user.
- Exclude targets that need the score_logging Rust log bridge from
  the aarch64 build.
- Upload test logs per matrix entry.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adds rust-toolchain.toml (1.90.0) as the single source of the cargo
toolchain version.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Coverage moved to coverage_report.yml.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
On-target QNX unit tests replace the manual RPi4 image test.
- delete qnx_integration_test.yml
- delete score/kvs/tests/integration_test_scenarios
- drop the custom_qemu dev dependency from MODULE.bazel
- drop the install/ fixture negations from .gitignore
- drop the removed stage_kvs_tool target from build_linux.yml

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@arkjedrz
arkjedrz force-pushed the arkjedrz_tooling-08-multi-arch branch from 4f871b7 to d5b27f4 Compare October 26, 2026 14:58
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run --lockfile_mode=error //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Starting local Bazel server (8.7.0) and connecting to it...
INFO: Invocation ID: a81500d4-c513-4ee7-ab2a-d66da9ba7d4c
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 2 packages loaded
Loading: 2 packages loaded
    currently loading: 
Loading: 2 packages loaded
    currently loading: 
Loading: 2 packages loaded
    currently loading: 
Loading: 2 packages loaded
    currently loading: 
Analyzing: target //:license-check (3 packages loaded, 0 targets configured)
Analyzing: target //:license-check (3 packages loaded, 0 targets configured)

Analyzing: target //:license-check (26 packages loaded, 14 targets configured)

Analyzing: target //:license-check (98 packages loaded, 14 targets configured)

Analyzing: target //:license-check (100 packages loaded, 14 targets configured)

Analyzing: target //:license-check (100 packages loaded, 14 targets configured)

Analyzing: target //:license-check (152 packages loaded, 3715 targets configured)

Analyzing: target //:license-check (152 packages loaded, 3715 targets configured)

Analyzing: target //:license-check (152 packages loaded, 3715 targets configured)

Analyzing: target //:license-check (152 packages loaded, 3715 targets configured)

Analyzing: target //:license-check (201 packages loaded, 6104 targets configured)

Analyzing: target //:license-check (205 packages loaded, 11659 targets configured)

Analyzing: target //:license-check (205 packages loaded, 11659 targets configured)

Analyzing: target //:license-check (212 packages loaded, 17769 targets configured)

INFO: Analyzed target //:license-check (213 packages loaded, 17903 targets configured).
INFO: From Generating Dash formatted dependency file ...:
INFO: Successfully converted 50 packages from Cargo.lock to bazel-out/k8-fastbuild/bin/tools/formatted.txt
[14 / 16] [Prepa] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar
INFO: Found 1 target...
[16 / 16] no actions running
Target //tools:license.check.license_check up-to-date:
  bazel-bin/tools/license.check.license_check
  bazel-bin/tools/license.check.license_check.jar
INFO: Elapsed time: 61.309s, Critical Path: 2.18s
INFO: 16 processes: 12 internal, 3 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 16 total actions
INFO: Running command line: bazel-bin/tools/license.check.license_check tools/formatted.txt <args omitted>
[main] INFO Querying Eclipse Foundation for license data for 42 items.
[main] INFO Found 32 items.
[main] INFO Querying ClearlyDefined for license data for 10 items.
[main] INFO HTTP response 502 (Bad Gateway). Trying again...
[main] INFO HTTP response 502 (Bad Gateway). Trying again...
[main] INFO Found 10 items.
[main] INFO License information could not be automatically verified for the following content:
[main] INFO 
[main] INFO crate/cratesio/-/lazy_static/1.5.1
[main] INFO 
[main] INFO This content is either not correctly mapped by the system, or requires review.

@github-actions

Copy link
Copy Markdown
Contributor

Documentation preview for this pull request is available at:
pr-587: https://eclipse-score.github.io/persistency/pr-587/

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant