Skip to content

Repository Server

Adrian Reber edited this page May 7, 2024 · 2 revisions

Repository Server

To distribute the packages built in OpenHPC's Open Build Service (OBS) the OpenHPC project runs an HTTPD server at https://repos.openhpc.community/ which provides repositories for dnf and zypper.

Package Flow

Once packages are built using OpenHPC's Open Build Service the resulting RPMs are tested using different test clusters. Testing consists of doing a bare metal install of usually one head node and two compute nodes. Once the head node has been installed the recipes published by the OpenHPC project are used to install the OpenHPC packages and set up the compute nodes.

In a first step the OpenHPC project runs its tests against RPMs published by the Open Build Service. Once these tests are all working the OpenHPC project runs its tests using the repository server. To not publish potentially non working RPMs the new RPMs are first synced to the staging area. This can be found at /repos/.staging/ on the repository server and accessed via https://repos.openhpc.community/.staging/.

To synchronize the packages from the Open Build Service to the staging area of the repository server the reposync.sh script (distributed via ansible) has to be run as the ohpc user:

$ ~/bin/reposync.sh -e -n 2.8 -p 2.7.1

The parameters are -e to disable the dry run mode, -n 2.8 the release number of the next release which is currently being worked on and -p 2.7.1 the release number of the previous release.

Once all files have been synced and once the repository has been created it is necessary to move the link from the updates directory to this newest release:

$ ln -snf update.2.8 updates

From this point on the staging repositories will contain the latest packages for the upcoming release (2.8 in this example).

Once all tests using the staging area are successful the files can be move to the production area:

cp -al --reflink=always update.2.8 /repos/OpenHPC/2/
cd /repos/OpenHPC/2/
ln -snf update.2.8 updates

The last ln command points the updates repository to the latest release and from this point all clients which have the updates repository enabled will have access to all updates from the latest release.

Clone this wiki locally