This presentation provides an overview of the architecture and implementation of the new artifacts repositories for EGI.
The EGI repositories are developed, maintained and operated by LIP and IFCA/CSIC. The new repositories will host RPMs for (RHEL and compatible distributions), DEBs (for Ubuntu and compatible distributions) and Docker images for container based services and micro-services.
The presentation will describe the architecture of the new repositories, its several components and capabilities. The architecture of the repositories is as follows:
- “Web front-end service” containing static information about EGI UMD and CMD releases, a software catalog allowing listing and searching of all the products in the repositories, and information about how to configure the repositories. The front-end also includes proxies to a Sonatype Nexusrepo,
- “Sonatype Nexusrepo” as the service which hosts all the artifacts (packages and docker container images),
- “Backend service” where verification, validation and adminstration of a given release is performed.
The backend service is where all the actions and logic occurs in order to verify, validate and publish a release. The release manager creates a new release either manually or through submission/upload of a yaml file containing the information of a given product. He can edit the fields and verify its correctness, then he can commit the form with the yaml describing the release. Upon validation of the yaml file, the content is parsed into a json file and a series of scripts are automatically executed.
The pipeline of actions are as follows in the case of RPM packages:
1. Parse json, get the list of files to download and produce list of filenames (packages). 2. Download the packages to a temporary directory. 3. RPM sign each package. 4. Verify signature of each package followed by the package verification 5. Upload each package to nexusrepo. 6. Download each package from nexusrepo. 7. Verify checksum and signature. 8. Upload json files to the front-end for publication. 9. Clean temporary directories.