Projects

Project

A project is the container defining a larger task. It contains the resources needed to build one or more applications (packages).

The project needs a name, it also have a slug and an uid to be identified in the web UI. This slug is an alias which, with uid, uniquely identify the project with other tools and URL, Ex: my-unique-slug_12345abc.

There are several types of projects depending on your needs:

  • Standard project : used to build applications (packaged as RPMs),
  • Container project : used to build containerized applications. It is based on redpak container,
  • Image project : used to build an image. Then, the resulting image can be deployed on a real board or emulator like qemu.

For standard project, the project will resulting to a RPM repository, it contains all RPM packages resulting of applications builds.

Inheritance between projects: inheritance allows one project to inherit the resources (understand applications / packages through RPM repository) from another project or distribution.

In the redpesk CI, the user can choose one or more inheritances.

Environment

Environment are available inside projects. Environments allow to have various variants of your projects to define for example different secrets.

When you create a project, an initial environment is automatically associated and is named: default.

A common usage is to define in your project one environment for production (eg. named prod), one environment for development (eg. named dev), in order to have different secret values for production and for development, for example.

Secret

A secret has a key name and a value. The key is used to refer the secret in various parts: eg. git sources URL, external specfile URL or secret injection in source code, …

Secrets are defined in the context of project’s environment.

Syntax to refer a secret is: ${{secrets.KEY_NAME}}

For more details, refer to project’s environment and secrets chapters.