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).
- .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.
- 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.