Skip to content
Snippets Groups Projects
  • Jonas Höppner's avatar
    CI: pipeline yocto: Change scope of CI_PARAM_IMAGE, ... to fix fngsystem build · c503a6d4
    Jonas Höppner authored
    The variables CI_PARAM_IMAGE, CI_PARAM_DISTRO, CI_MACHINE have been
    defined outside the job in the '.gitlab-ci.yml' file. This has a lower
    precedence then variables defined inside the job, but it seems that
    these variables are used in the scope of 'Trigger variables' when
    available in the trigger job. These override the value set in the
    template. As main results this made FNGSystem jobs build the normal
    yocto.
    c503a6d4
Code owners
Assign users and groups as approvers for specific file changes. Learn more.

Manifest pipeline

The pipeline running in the manifest repository is the one that does the real work, like building images, generating docs and deploying image to download servers and triggering tests in the lava test rack.

Triggers

TODO

Build jobs

TODO

Deploy and upload jobs

TODO

Test jobs

TODO

Job generation, parent child jobs

As we support images for multiple machines/architectures we are building a lot of different image variants, where each needs at least build, deploy and test job. To simplify the generation of all these jobs, without a lot of copy and paste and the possibility to configure the actual build images, we are using gitlab's dynamic-child-pipeline feature. See gitlab docs.

There is a 'generate-build-jobs' job, that creates a yaml file containing the pipeline with all needed jobs. There are the following CI variables in the 'generate-build-jobs' job controlling the content (make sure these are not set in a more global scope, as this would overwrite the settings in the generated yml):

  • CI_PARAM_MACHINES: Space separated list of machines to build for, like "santaro santoka"

  • CI_PARAM_IMAGE: The name of the image to build. If set to an empty string, related jobs are not created.

  • CI_PARAM_DISTRO: The name of the distro to build

  • CI_PARAM_IMAGE_FNG: The name of the fngsystem image to build. If set to an empty string, related jobs are not created.

  • CI_PARAM_DISTRO_FNG: The name of the fngsystem distro to build

It uses a python script called generate_job_from_template.py to convert the build-jobs.jinja2 to build-jobs.yml. This yml file is then used by the 'trigger-build-jobs' job, to setup the pipeline described by it.

Manifest's parent child pipeline