Software Repository and Continuous Integration and Delivery

The Software repository is the place where to store the development-related environment like source code, metadata, testsuites, benchmarks, software and also the e-Infrastructure itself. It is an integrated cloud service for the whole development life-cycle. Providing a software repository accessible from a single place (the portal) will help to homogenize applications usage and to increase the visibility and the impact of the provided data and applications. All data and applications stored in the repository can be accessed through computer networks, with http and ssh protocols. Access control to this service will be through the previously exposed authentication and authorization methods.

The technology choice for the software repository relies on Gitlab, in particular GitLab Community Edition, a popular, scalable and open-source project supported by GitLab inc. and a huge community. See a running instance of Gitlab at CESGA cloud here! and in the following Figure 1.

1. Software repository

Thanks to GitLab we can provide several features to help to create, build, manage and maintain software projects during all the development lifecycle. Some of its features are enumerated in this section, but it is important to remark that GitLab allows managing different user profiles, roles and the repository visibility. This means that the end-user will control several levels of privacy for all its data.

One of the main GitLab features is to provide a code repository based on Git and a set of tools to manage the history of changes, easing some common practices like branching, tagging and code reviewing. Other features like its merge request tool, issue tracking, code snippets and wikis help to enrich the communication process of the developer team itself and also with users community.

2. Continuous integration

GitLab also provides built-in continuous integration. Software projects can configure and automate the building process with every submitted change. It improves failure discovering and fast bug fixing decreasing risks and problems related with the integration and deployment. It also supports a Docker based CI to define and control the building environment during the CI process. GitLab architecture allows separating this component in a different machine to prevent bottlenecks to the main web service due to the load of the CI service.

In addition to wikis, GitLab can host and deploy user defined static web pages. Together with the continuous integration and delivery service this is a suitable tool to publish up-to-date software documentation, projects, groups or personal info.


Figure 1. GitLab hosted at CESGA cloud

The GitLab software repository is supported by a backup system, storing redundant information. This information could be retrieved in case of a catastrophic problem, avoiding data losing and helping to mitigate other possible risks.

You can find more info about Gitlab in the official Gitlab Help page. You can see an example of how to setup CI/CD for MSO4SC in this repository.