prplos/.gitlab
Petr Štetiar 26895230f7 ci: cram: add component split jobs behind CRAM_COMPONENTS
The hardware cram jobs currently run each board's complete suite. Every
automatic pipeline therefore consumes coverage that can be selected more
cheaply by component.

Add a runtime component template so test collection happens in cram's
checkout and environment. Replace each legacy board job with four static
full, prplmesh, lcm, and prplos jobs selected through the
comma-separated CRAM_COMPONENTS variable.

Name each job `cram <board> [<component>]` and include the selected
component in the expandable test-execution section title.

Move the MXL-specific cram skip from the legacy job-name token. Use the
stable DUT board identifier instead.

Preserve skip behavior under the compact OSPv2 name.

Default automatic pipelines to prplos. Start the full jobs
automatically in prplware release tag pipelines, whose build jobs also
run automatically. Keep cram jobs out of scheduled pipelines entirely,
as with the legacy suite: schedules never create the build jobs these
jobs need, so any selected cram job would fail scheduled pipeline
creation with an unsatisfiable needs reference. Keep the test command,
post suite, timeout, run_check, and JUnit filenames unchanged.

Assisted-by: codex:gpt-5
Assisted-by: claude:fable-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
..
cdrouter profiles: add Airoha/Nokia profile 2026-07-01 15:11:24 +01:00
certs
docker ci: docker: drop the in-tree testbed container 2026-07-28 10:14:51 +01:00
manual_tests/cram/mxl25641-hdk-6 cram: add manual tests for WAN modes on OSPv2 B-step board 2026-06-24 11:31:10 +01:00
mockups
scripts ci: cram: use legacy SCP protocol for remote copies 2026-07-28 10:19:01 +01:00
testbed profiles: add Airoha/Nokia profile 2026-07-01 15:11:24 +01:00
tests ci: cram: add component split jobs behind CRAM_COMPONENTS 2026-08-19 10:14:27 +00:00
blackduck.yml ci: blackduck: Add tar.gz archiving of BlackDuck scan output 2025-11-21 12:35:44 +01:00
build.yml ci: build: generate release version files for tags 2026-08-18 09:06:22 +00:00
cdrouter.yml ci: cram: use legacy SCP protocol for remote copies 2026-07-28 10:19:01 +01:00
coverity.yml ci:coverity: fix uboot-tools cov-build failure. 2026-07-11 07:33:54 +00:00
docker.yml ci: fix wasting of runtime testing resources after failed builds 2025-07-31 15:27:24 +00:00
prplmesh.yml ci: EasyMesh R1: flash Freedom via FEAT-29 update_prpl 2026-07-17 10:33:56 +01:00
README.md
release.yml ci: release: ospv2: move the ext4 rootfs into the bootstack archive 2026-07-07 09:45:27 +00:00
sdk.yml ci: ipq807x: fix filenames and references after target rename to qualcommax 2025-07-31 15:25:51 +00:00
testbed.yml ci: cram: add component split jobs behind CRAM_COMPONENTS 2026-08-19 10:14:27 +00:00

Content

This directory contains stuff used on the GitLab CI.

docker

Contains definitions for Docker images.

testbed

Contains definitions for testbed related tests.

scripts

Contains scripts used on GitLab CI.

tests

Contains tests used on GitLab CI.

build.yml

Contains definition of the GitLab CI build test job templates used during build stage. Those templates can then be extended by other GitLab CI jobs in order to keep things DRY.

.build test config

Allows build testing of specific configurations defined in the profiles directory, using scripts/gen_config.py under the hood.

Example usage:

include:
 - local: .gitlab/build.yml

stages:
 - build

build test netgear-rax40 prpl:
  extends: .build test config

Which is going to build test prplOS with netgear-rax40 and prpl profiles.

Description of CI variables:

  • CI_BUILD_CONFIG_EXTRA - list of additional config options which should be enabled(prefixed with +) or disabled (prefixed with -), for example +BUILD_LOG -SDK would result in CONFIG_BUILD_LOG=y and CONFIG_SDK=y config symbols in .config file.

docker.yml

Provides support for building, tagging and pushing the Docker images to image registry.

For example let's build image foo.

Prerequisites:

  • Create directory for new Docker image mkdir -p .gitlab/docker/foo
  • Docker image description $EDITOR .gitlab/docker/foo/Dockefile

Then just put following into .gitlab/docker/foo/gitlab.yml

build Docker image foo:
  extends: .build Docker image

testbed.yml

Provides bits needed for runtime testing on real device using labgrid Python testing framework.

Supported devices:

  • Netgear RAX40

sdk.yml

Provides support for the OpenWrt SDK utilizing the Docker SDK container under the hood.

.build feed with SDK

Allows compile testing of packages using the SDK.

Example usage, build testing of safec3 package from Intel's feed_opensource_apps feed.

include:
  - remote: https://gitlab.com/prpl-foundation/prplOS/prplos/-/raw/prplos/.gitlab/sdk.yml

build:
  extends: .build feed with SDK
  variables:
    CI_SDK_INSTALL_FEEDS: feed_target_mips
    CI_SDK_BUILD_PACKAGES: safec3

Description of CI variables:

  • CI_SDK_INSTALL_FEEDS - list of feeds which should be installed prior to building packages.
  • CI_SDK_BUILD_PACKAGES - list of packages which should be compile tested.
  • CI_SDK_BUILD_PARALLEL - max number of threads to use for make (defaults to nproc if unset).

.generate SDK package build jobs

Generates sdk-package-jobs.yml with separate build jobs for every package so the builds of those packages can run in parallel. It's supposed to be executed by the child pipeline .execute SDK package build jobs.

.execute SDK package build jobs

It's supposed to execute jobs generated in sdk-package-jobs.yml generated by .generate SDK package build jobs job.