# 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: ```yaml 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` ```yaml build Docker image foo: extends: .build Docker image ``` ## testbed.yml Provides bits needed for runtime testing on real device using [labgrid](https://labgrid.readthedocs.io/en/latest/) Python testing framework. Supported devices: * Netgear RAX40 ## sdk.yml Provides support for the [OpenWrt SDK](https://openwrt.org/docs/guide-developer/using_the_sdk) utilizing the [Docker SDK container](https://gitlab.com/prpl-foundation/prplOS/prplos/-/tree/prplos/.gitlab/docker/sdk) under the hood. ### .build feed with SDK Allows compile testing of packages using the SDK. Example usage, build testing of [safec3](https://gitlab.com/prpl-foundation/intel/feed_opensource_apps/-/tree/ugw-8.4.1/safec3) package from Intel's `feed_opensource_apps` feed. ```yaml 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.