CodeAbility Sharing Platform

The modules provided in this repository represent the CodeAbility’s Sharing Platform. Subsequently, the infrastructure of the Sharing Platform and the setup of this infrastructure are discussed.

The following diagram depicts the Sharing Platform’s general infrastructure.

GitLab search infrastructure

In the following, a brief description of each component is given.

  • GitLab: Publicly available GitLab instance that manages file versioning and storing. This instance has a dedicated group called sharing. Resources (e.g., lab exercises, lecture slides, collections of links, or Artemis exercises) published in this group are shared with the CodeAbility project partners. To support UML diagrams, the GitLab instance is extended with the PlantUML Service.

  • FileHook: A minimalstic gitlab filehook-stub that forwards gitlab events (https://docs.gitlab.com/ee/system_hooks/system_hooks.html) to the gitsearch application for processing and indexing.

  • GitSearch Application: Frontend of the CodeAbility’s Sharing Platform metadata search. It is implemented as a JHipster application and provides a REST API for querying the metadata. Additionally it handles GitLab’s system_hooks events and processes potential changes in meta data. It validates and indexes the detected meta data. Further details can be found in the sections FileHooks and Indexing and _ref_gitsearch.

  • MySQL: Database for the frontend to store various application data e.g., user data.

  • Elasticsearch: An Elasticsearch instance providing a search engine.

The components can be partitioned into the frontend and the backend of the CodeAbility Sharing Platform. The following services are considered part of frontend:

  • GitSearch Application (including GitSearch Indexer as a REST service)

  • MySQL

While, the subsequent components are part of the backend:

  • GitLab (including filehhook as a minimalistic REST client to the GitSearch Indexer)

  • PlantUML

  • Elasticsearch

Additionally an instance of

is running

Service

Container name

Port Mapping

GitLab

sharing_gitlab

10082->80,10083->443, 22->22, 5051->5051

Elasticsearch

sharing_elasticsearch

9200, 9300 (unmapped)

GitSearch Appl.

10083->8080

MySQL

sharing_my_sql

PlantUML

sharing_plantuml

(no external ports)