GitLab pipeline

A brief overview of GitLab pipeline

Parent pipeline

This pipeline is responsible for setup, configuring tools in the Docker images, and performing static analysis (Code Quality, Danger-Review, secret detection, and container scanning).


../_images/gitlab_parent_pipeline.svg

  • .pre:

    • Build the Docker images required for the project (For example debian-buster OS) for different architectures and push them to the registry. This involves IDT Greengrass, LAVA and Utility Docker (arm64, x86_64) images.

    • Pull the generated Docker images and config and create a manifest for LAVA and Utility usage.

    • Run danger-bot for reviewing and report issues early.

    • Regenerate the changelog when the project version number is changed.

  • Setup:

    • Setup stage to ensure all the configurations have a valid yaml file.

    • Merge all the jobs into one file which defines each stage of the child pipeline.

  • Build:

    • Build the documentation.

    • Create a child pipeline.

  • Test:

    • Collate-results from child pipeline.

    • Detect any secrets present in the codebase.

    • Test the code quality using Code climate plugin.

    • Generate code quality report using Code climate plugin.

    • Run Gitlab semgrep analyzer.

  • Release:

    • Creating the release and notes.

Child pipeline

This pipeline is responsible to build cassini distro images, setup, submit and report back results from the LAVA test framework perform.


../_images/gitlab_child_pipeline.svg

  • Setup:

    • Update external repositories that are required for Cassini distribution.

    • Extract the required FVP version details from the codebase.

  • Build:

    • Image build for all supported platforms depending on rules or changes to the codebase.

    • Check if Cassini distro is compatible with layers definitions, this is based on each platform and multiple layers included in the distro.

  • Test:

    • Install the required FVP in a Docker image.

    • Prepare the built Cassini distro images for LAVA test framework.

    • Submit jobs to the LAVA test framework.

    • Wait for event from LAVA test framework for completion and return to parent pipeline

  • Cleanup:

    • Clean the sstate cache and download directory which is older than specific number of days.