Project releasing

Introduction

Projects release allows you to share projects with specific users or teams within the factory. This release will contain all the project applications, all architectures, and for the moment, only one distribution per release.

WebUI

To release a project you need at least one built application. In order to make the release follow these steps:

  • Go on “Projects” tab
  • Click on the project you want to release
  • Go on under “ACTIONS” tab
  • Expand “Release project” (at the bottom)
  • Choose a distribution and a release version (e.g. 1.0)
  • Click on the “RELEASE PROJECT” button

Once the project is released you need to choose the audience (the users or teams you will share it with). You can also choose Release to all people using this factory.

  • Go on “Projects” tab
  • Click on RELEASED PROJECTS
  • Choose the released project you want to share
  • Go to the “AUDIENCE” tabs
  • Select one or multiples users/teams at the left
  • Click the » (move-to-the-right) button to select them
  • Click on “UPDATE AUDIENCE”

Finally, in order to use the released project outside the WebUI you need the token that was created during the release. The Repository URL and Repository access token are found in the release Overview (Projects > RELEASED PROJECTS > selected project). With them you will be able to use the download server that turns within the factory.

redpesk-cli

It is also possible to release a project from redpesk command line, alias rp-cli. In order to do that you have to specify the slug of the project you want to release, the distribution targeted by the release, and the release version. Additionally, you can specify a name for the “released project” that will be created.

The other flags are here if you want to set-up a specific audience for the released project:

  • One or several user(s): flag --user
  • One or several team(s): flag --team
  • All users of the factory: flag --all-users

In order to get the slug of your project, you can use the rp-cli projects list as below.

$ rp-cli projects list
ID                                        Slug                        Name                        Version        Type
73027643-f827-40c4-ad13-86748c0b99b6      iot-project                 IOT Project                 [Not set]      standard
1fd09a37-cf76-4ce0-9833-b7c346381aa6      my-new-project              New project                 [Not set]      standard
b1a06375-0d28-4091-b9d6-4603cebe85dd      redpesk-ci                  Redpesk CI                  [Not set]      standard
77a6df2a-918a-4fff-a108-8c5f0ab4dc80      redpesk-industrial          Redpesk Industrial          [Not set]      standard
74c88f7a-3f5a-4072-bb29-2291fa8bc05a      redpesk-industrial-image    Redpesk Industrial Image    [Not set]      standard

In order to save time do not forget that rp-cli has a completion system, for example once you wrote the --distribution flag you can press TAB and rp-cli will give you the available distributions! It is the same for users or teams.

Then, run the following command (adapt the distribution, the version and eventually the audience flags to your needs):

$ rp-cli projects release redpesk-banano-ci-0 -d "Release 1.0 of the industrial project" --distribution redpesk-lts-arz-1.1-update -v 1.0
-- Project release requested by user --
Checking distribution validity...					[OK]
Requesting the factory to release the project "redpesk-industrial"...[OK]
Waiting for the project "redpesk-industrial" to be released...[OK]

After that, you will be able to get the list of released projects using:

$ rp-cli projects releases list
ID                                       Slug                        Version  Reference
57e78801-1edc-4c98-af2d-96ae02ab194e     redpesk-industrial-1.0      1.0      redpesk-industrial

Here below the whole release project process using rp-cli.

Enable GPG signature checking on board

Redpesk supports a basic GPG signature model. Every package in a released project is signed with the same GPG key by the factory it was released in. When enabled, the update tools (dnf) will verify the authenticity of the packages by verifying those GPG signatures and refuse to install any package that is not signed or has an incorrect signature.

The configuration file for dnf is located in /etc/yum.repos.d/redpesk-update.repo. To enable the signature checking on board, we need to set the gpgcheck option to 1 in the [redpesk] and [redpesk-middleware] sections of the configuration file (gpgcheck=1). The gpgkey option specifies the location of the GPG key.

To do so, we can use the following command dnf config-manager --setopt=<repoid>.gpgcheck=1 --save as shown below :

dnf config-manager --setopt=redpesk-update.gpgcheck=1 --save
dnf config-manager --setopt=redpesk-middleware-update.gpgcheck=1 --save