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.
.. image:: SearchArchitectureFileHook.png
:width: 600pt
:alt: 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 :ref:`ref_filehooks` and :ref:`_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
- `portainer `_
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) |
+-----------------+-----------------------+-------------------------------------------+