CodeAbility Sharing Platform

The modules provided in this repository represent part of 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.

  • FileHook: FileHooks extend the GitLab’s base functionality and are triggered by GitLab on specific events (https://docs.gitlab.com/ee/system_hooks/system_hooks.html). Currently, one file hook for validating and indexing is implemented. Further details can be found in the section FileHooks.

  • GitSearch Application: Frontend of the CodeAbility’s Sharing Platform metadata search. Further details can be found in the section GitSearch Application.

  • MySQL: Database for the frontend to store e.g., user credentials.

  • Elasticsearch: 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

  • MySQL

While, the subsequent components are the backend:

  • GitLab

  • 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