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.

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 |