AlmaLinux Build System Guide for Authorised Users - AlmaLinux/build-system Wiki

About AlmaLinux Build System

AlmaLinux Build System is a project designed to automate the processes of building packages and distribution. The pipeline was developed to build, test, sign and release packages. AlmaLinux Build System was created with the purpose to make these processes easier, faster, and to manage these processes more effectively. AlmaLinux Build System supports community repositories and SBOM integration into the pipeline is in the process.

AlmaLinux Build System's Components

AlmaLinux Build System consists of the following components:

  • Build System's Master Service interacts via API interface with UI and CLI tools.
  • Build Node sends requests to the Master Service and receives Build Tasks to build packages. After being built these packages are kept as artifacts at the Artifact Storage.
  • Build System's Master Service interacts via API interface with UI and CLI tools.
  • Build Node sends requests to the Master Service and receives Build Tasks to build packages. After being built these packages are kept as artifacts at the Artifact Storage.
  • Test System sends a request and receives Test Tasks (builds) to test built packages from Artefact Storage. Test System test packages via Test Nodes (eg. Docker or OpenNebula with different architectures) and send test artifacts or test logs and reports back to Artifact Storage.
  • Sign Server sends a request and receives sign tasks to sign packages with our PGP key. It takes unsigned packages from Artifact Storage and puts them back signed.
  • Release System sends a request and receives release tasks to upload signed packages to public repositories.
  • Git Server sends updates via API to Master Service. It does it with the help of two services: gitea-listener and git-cacher.

Build System Overview

One can log in to AlmaLinux Build System via their GitHub account.

Once you log in, you'll see the Build Feed and the sidebar menu.

Note: There's read-only access to the Build System that doesn't require authorization. It describes the information you can find in the Feed. Check the Read-Only Guide for more details.

Note: Errata and Releases options are available only for AlmaLinux Team members.

New Build

To start a new build go to the New Build option in the sidebar menu.

Fill in necessary fields:

  • Product - choose the name of the product from the list
  • Build platforms - you can choose a platform you need
    • Build platform architectures - after choosing a platform, a field with architectures will appear with automatically chosen all supported architecture. You can remove the architectures you don't need
  • Build flavors - optional, choose an additional repository to use for the build, like EPEL, for example.
  • Linked builds - optional, enter build IDs to add them for this build. Don't forget to press Enter or click + sign to add build ID
  • Mock options - optional, define your mock options here

Note: Separate builds have to be created if different platforms are needed. It's not recommended to create one build for different platforms.

Click Select projects to proceed.

Click Add project. There are a few options:

  • git.almalinux.org - choose a repo name and tag/branch name from the list. The build system is integrated with git.almalinux.org and automatically pulls projects from it.
  • Src-RPM URL - enter here the link of the source rpm
  • Git reference - enter here links of the git repo and branch/tag name

Press Submit and Create a build to start the build.

How to build modules

Besides building RPM packages, it's possible to build modules in the AlmaLinux Build System. A module is a group of RPM packages that represent a component like an application, a language runtime, or a set of tools. Read more about modules in the Modularity project. To build modules, go to the New Build option and fill in the necessary fields. Press "Add a project" and activate the "Projects" option. That'll switch to the module's interface. Choose a repo from the git.almalinux.org list and add a tag/branch name, or add a source-rpm link or git link.

Build logs

There are two ways you can open the build and test logs:

  • Click on the status circle
  • Click on the build status after going to the platform in Details

Both will show you all the build and test logs. Click on any .log file to open information.

Community repositories

AlmaLinux Build System supports user (community) repositories for users to create new projects and share them with others. This guide describes how to create and manage a new team or product.

Teams

Any AlmaLinux Build System user can create a new team - a group of users to maintain products.

In the Team section, you can see a list of existing teams and information about each of them - team name, owner, number of products and members.

Use the BIN button to delete a team.

Clicking on the information sign, products number and member number will give you more details and options:

Now you can see the user ID and username of each member. You can add or remove team members in this window. You need to choose their nicknames from the list to add a user or some users.

Click on the product number to see a list of products. You can click on a product name to see information about it.

There is one more available window - roles.

There are several types of roles:

  • Сontributor - default role for a team user. A contributor can release new packages to this product or sign them.
  • Manager - a user, who created this team, becomes its manager automatically. He has permission to add other users to the team, create a product, delete members/team/product, and assign roles to other members.
  • Observer - a user with read-only access to view team structure or use a repository
  • Product_maintainer - a user with access to release to the product
  • Signer - a user with access to sign packages

Note: The team owner can't leave the team even if they aren't the team manager.

Creating a team

Click on the New button to create a new team, fill in your team's name and you are good to go.

Products

There are two options in the Product section: Product Feed and New product.

New product

To create a new product, you have to feel the necessary fields:

  • Product name - for a short product name
  • Product title - for a full product name
  • Create for team - choose a team from the list
  • Create from platforms - choose a platform/s

Here's an example:

The description field is optional but is helpful to get the product's purpose.

Press the Create button and wait for the Loading to complete. If something is wrong - you'll receive an error and a product won't be created.

Note: If you accidentally leave the page, the product will still be created if no errors occur.

Here's an example of created product:

There's also a BIN button to delete a product.

Product Feed

In the Products feed, you can see all existing products, information about them and build count. There's also a search bar to search for a product by its name or title.

You can add/remove a build to your product from the Build Feed. Click on a build you need and choose an option you need among Other Actions.

How to connect a build repository to a user's virtual machine and test packages?

When you choose a product, you will see its installation link above all information about this product.

Before enabling the product's repo on your VM, you need to setup the COPR plugin. Click on the Documentation button to see instructions for the quick setup of the COPR plugin.