Skip to content
This repository has been archived by the owner on Jan 6, 2023. It is now read-only.
George T Kramer edited this page Dec 12, 2019 · 1 revision

Overview

The Build pipeline is responsible for creating a new version of your distrobution. Its scope goes from fetching the content up to deploying the final output on the machine hosting your front-facing web server. It is divided in several stages.

Input Parameters

Name Description Type Required?
NAMESPACE Name to be used to differentiate different distribution in the builder machine, avoiding overrides. String Yes
CONFIG_REPO_HOST Username and host to be used with git clone command. i.e.: git@git.myhost.com: String Yes
MIN_VERSION If the build should produce a new MIN VERSION Boolean No
CLR_PUBLIC_DL_URL Alternative mirror to use instead of download.clearlinux.org String No
CLR_LATEST A Clear Linux version to be used instead of the lastest String No

Output

On Success, a new release should be successfully found on the PUBLISHING_HOST (defined by the workflow config)

On Failure, see log for details

Stages

Initialize Environment

This is a setup stage, which is responsible for making sure that the build environment is in good shape and calculating the version number to be used with the build and checking the availability of the required tools and servers.

Setup Content (Content)

This stage is responsible to fetch the content that should be part of the next release. It is composed by multiple steps, being each one a 'Content provider'. A content provider is just a script that fetches from a given source and bundles from a given repo and puts them in their predefined places. Once all content providers have fetched their content, a final step wraps rpms into a single local repo that will be consumed by mixer on the next step. It also creates a package list to be published as metadata of the release.

Currently, clr-distro-factory offers only an implementation for Koji, but to add different content providers should be a straight forward task.

Create Update Stream (Mixer)

This is stage is responsible for configuring and running mixer on the input data to produce the new release. Most of its code is for properly preparing the mixer workspace for a successful run, including dealing with format bumps.

Create Images

This stage responsible for the generation of new images based on the release that was just produced by the previous stage.

Stage

This stage is responsible for finalization tasks (that range from meta data creation to tagging repos to allow for reproducible builds) and copying all the required outputs to a staging folder. At this points, all the expected artifacts of a release are done and the new release is ready to either be validated by QA or be publish to clients (if QA is non-existent).

Publish

On clr-distro-factory, there is no 'default' QA implementation (due to reasons discussed here), so this stage follows 'Stage' and its only job is to rsync the newly staged release to the appropriated folder on the machine that will serve the Downstream to clients.