Skip to content

Add qemu-only build CI mirroring meta-qcom's pipeline - #19

Draft
Koen Kooi (koenkooi) wants to merge 1 commit into
qualcomm-linux:mainfrom
koenkooi:koen/ci-mirror-qemu
Draft

Add qemu-only build CI mirroring meta-qcom's pipeline#19
Koen Kooi (koenkooi) wants to merge 1 commit into
qualcomm-linux:mainfrom
koenkooi:koen/ci-mirror-qemu

Conversation

@koenkooi

Copy link
Copy Markdown
Contributor

Description

Adds automated build-verification CI for meta-ai, scoped to qemu machines only (no hardware/BSP dependency). Mirrors meta-qcom's CI pipeline shape (kas lock → patchreview/check-layer → compile matrix → summary), reusing qualcomm-linux/meta-qcom's compile action directly rather than vendoring a local copy.

Build/test matrix: distro: nodistro × machine ∈ {qemuarm, qemuarm64, qemux86-64}.

On-device LAVA testing is explicitly not enabled yet — lava-test.yml is added as a workflow_dispatch-only disabled placeholder documenting the intended future scope (on-device testing of litert/onnxruntime/tensorflow-lite/llama-cpp against simple models, targeting rb1-core-kit, rb3gen2-core-kit, uno-q, and ventuno-q — the last one currently blocked on unmerged qualcomm-linux/meta-qcom-3rdparty#16).

Note: this PR is referenced from #18 (README standalone-build requirements), which describes the CI enforcement this workflow provides. Opening as draft since self-hosted-runner access for this repo ([self-hosted, qcom-u2404, amd64]) has not been confirmed from this environment — see risks below.

Type of Change

  • New feature (non-breaking change which adds functionality)

Risks / open questions (not blocking, flagging for reviewers)

  1. Self-hosted runner access for qualcomm-linux/meta-ai on the qcom-u2404 pool is unconfirmed — if not already granted, these jobs will queue indefinitely on first run.
  2. CACHE_DIR reuses meta-qcom's existing /efs/qli/meta-qcom shared storage rather than provisioning a new path — meta-ai's CI cache now shares churn with meta-qcom's larger CI.
  3. ventuno-q (named in the LAVA placeholder's TODO) doesn't exist upstream yet.
  4. The reused compile action unconditionally stages deploy/images/<machine>/* to S3 (qcom-prd-gh-artifacts bucket) even for qemu machines, which have no hardware to flash — harmless, just build-artifact archival.

Checklist

  • This change builds standalone (no new dependency on any BSP or hardware-enablement layer) and works on qemuarm, qemuarm64, and qemux86-64 with DISTRO=nodistro
  • CI dry-run on GitHub (cannot be verified from this environment; local kas-container dump --skip repos_checkout verification only)

Add a kas build matrix (nodistro x qemuarm/qemuarm64/qemux86-64) that
runs on every PR and push, giving meta-ai automated build-verification
signal for the first time. This repo previously had only the generic
qcom-preflight-checks/stale-issues hygiene workflows and relied on
manual `bitbake` runs to catch build breakage.

- ci/base.yml + ci/<machine>.yml: CI-only kas fragments mirroring
  meta-qcom's ci/ layout so the reused compile action's hardcoded
  paths (ci/${machine}.yml, ci/kas-container-shell-helper.sh, etc.)
  work unmodified. Kept separate from kas/base.yml (the existing
  hand-run developer path), which has different conventions (branch
  pin, disk-monitor thresholds).
- kas/qemuarm.yml, kas/qemux86-64.yml: matching machine fragments for
  the developer-facing kas/ path, alongside the existing
  kas/qemuarm64.yml.
- .github/workflows/build-yocto.yml: reusable workflow (kas-setup ->
  patchreview/check-layer -> compile matrix -> summary), calling
  qualcomm-linux/meta-qcom's compile action directly rather than
  vendoring a local copy. Runs on the same self-hosted qcom-u2404
  runner pool as meta-qcom, and reuses its CACHE_DIR
  (/efs/qli/meta-qcom) rather than provisioning new shared storage.
- .github/workflows/pr.yml, push.yml: trigger the reusable workflow on
  PRs to main and pushes to main/wrynose.
- .github/workflows/lava-test.yml: disabled workflow_dispatch-only
  placeholder documenting future on-device LAVA testing (litert,
  onnxruntime, tensorflow-lite, llama-cpp on rb1-core-kit,
  rb3gen2-core-kit, uno-q, ventuno-q) without wiring it up yet.

Verified locally via `kas-container dump --skip repos_checkout` for
every new kas fragment combination; no CI dry-run possible from this
environment (self-hosted runners and S3 credentials are not
reachable here).

Signed-off-by: Koen Kooi <koen.kooi@oss.qualcomm.com>
wget -qO ${KAS_CONTAINER} https://raw.githubusercontent.com/siemens/kas/refs/tags/$LATEST/kas-container
chmod +x ${KAS_CONTAINER}

- uses: actions/checkout@v6
${KAS_CONTAINER} lock --update ci/base.yml

- name: Upload kas lockfile
uses: actions/upload-artifact@v6
path: ci/*.lock.yml

- name: Upload kas-container
uses: actions/upload-artifact@v6
if: github.repository_owner == 'qualcomm-linux'
runs-on: [self-hosted, qcom-u2404, amd64]
steps:
- uses: actions/checkout@v6
ref: ${{ inputs.git_ref }}

- name: Download kas lockfile
uses: actions/download-artifact@v7
path: ci

- name: Download kas-container
uses: actions/download-artifact@v7
yamlfile: ""
name: ${{ matrix.machine }}/${{ matrix.distro.name }}${{ matrix.kernel.dirname }}
steps:
- uses: actions/checkout@v6
ref: ${{ inputs.git_ref }}

- name: Run kas build
uses: qualcomm-linux/meta-qcom/.github/actions/compile@master
runs-on: ubuntu-latest
steps:
- name: 'Download build URLs'
uses: actions/download-artifact@v7
Comment thread .github/workflows/pr.yml
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v6
Koen Kooi (koenkooi) added a commit to koenkooi/meta-ai that referenced this pull request Jul 16, 2026
build-yocto.yml doesn't exist on main yet (flagged in review); it's
in-progress as qualcomm-linux#19. Rephrase to describe CI as intended/pending
rather than asserting it already enforces the matrix, and link the
PR so reviewers can track it.

Signed-off-by: Koen Kooi <koen.kooi@oss.qualcomm.com>
Koen Kooi (koenkooi) added a commit to koenkooi/meta-ai that referenced this pull request Jul 16, 2026
Add a "Layer requirements: standalone build" section spelling out
that meta-ai must build and package on its own, without depending on
any BSP or hardware-enablement layer, and that recipes should build
for qemuarm/qemuarm64/qemux86-64 with DISTRO=nodistro where possible.
Add a matching PR template checklist item.

CI enforcement of this matrix is described as pending rather than
already in place, since the corresponding workflow (qualcomm-linux#19) hasn't
landed on main yet.

Signed-off-by: Koen Kooi <koen.kooi@oss.qualcomm.com>
Koen Kooi (koenkooi) added a commit to koenkooi/meta-ai that referenced this pull request Jul 16, 2026
Add a "Layer requirements: standalone build" section spelling out
that meta-ai must build and package on its own, without depending on
any BSP or hardware-enablement layer, and that recipes should build
for qemuarm/qemuarm64/qemux86-64 with DISTRO=nodistro where possible.

CI enforcement of this matrix is described as pending rather than
already in place, since the corresponding workflow (qualcomm-linux#19) hasn't
landed on main yet.

Signed-off-by: Koen Kooi <koen.kooi@oss.qualcomm.com>
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.

2 participants