The tools that take part to the integration of software during a release process are very well integrated each other in order to guarantee an high level of automatism. The set of tools and their interconnections are refereed as Integration Infrastructure and its layout is depicted in the figure below.
Information is stored in three main repositories withing the integration infrastructure:
- the gCube Source Code repository that contains the source code of all gCube components;
- the gCube Data Model repository that contains metadata associated to each gCube component related to building and packaging commands, dependencies, project structure (this repository corresponds to the ETICS database);
- the gCube Maven repositories a set of Maven repositories that hosts all the artifacts produced for each component during the project builds;
A fourth repository, the Software Gateway repository is considered of interest for the release process. In fact, this repository keeps the list of profiles of all gCube software deployable in a given gCube instance. At the end of the release process, the profile of all components released are pushed in the D4Science Infrastructure Software Gateway in order to make them available for the deployment into the production infrastructure.
There are four main services used by developers, project managers and community users to perform different tasks:
- the ETICS Web Portal: to model a component in gCube (source code location, build commands, dependencies);
- the ETICS build nodes: to perform builds and tests of gCube components;
- BTRT: to perform continuous integration of all gCube components both for HEAD and for candidate releases;
- the gCube Distribution Site: to download binary artifacts of gCube components;
The repositories and services in the integration infrastructure will be described in detail in this section.
- a feasibility study has been done in 2016 to evaluate the option of using Jenkins instead of ETICS as integration tool. Details and results are available here: Jenkins Analysis.