Skip to main content

Core of GrimoireLab

Project description

GrimoireLab Core

GrimoireLab scheduler to fetch data from software repositories.

The scheduler is a distributed job queue that schedules and executes Perceval. The platform has one or more workers that will run each Perceval job.

The repositories whose data will be fetched are added to the platform using a REST API. Then, the server transforms these repositories into Perceval jobs and schedules them between its job queues.

Workers are waiting for new jobs checking these queues. Workers only execute a job at a time. When a new job arrives, an idle worker will take and run it. Once a job is finished, if the result is successful, the server will re-schedule it to retrieve new data.

By default, items fetched by each job will be published using a Redis queue.

Requirements

  • Python >= 3.11
  • Redis database
  • MySQL database

You will also need some other libraries for running the tool, you can find the whole list of dependencies in pyproject.toml file.

Installation

There are several ways to install GrimoireLab core on your system: packages or source code using Poetry or pip.

mysql_config

Before you install GrimoireLab core you might need to install mysql_config command. If you are using a Debian based distribution, this command can be found either in libmysqlclient-dev or libmariadbclient-dev packages (depending on if you are using MySQL or MariaDB database server). You can install these packages in your system with the next commands:

  • MySQL
$ apt install libmysqlclient-dev
  • MariaDB
$ apt install libmariadbclient-dev-compat

PyPI

GrimoireLab core can be installed using pip, a tool for installing Python packages. To do it, run the next command:

$ pip install grimoirelab-core

Source code

To install from the source code you will need to clone the repository first:

$ git clone https://github.com/grimoirelab/grimoirelab-core
$ cd grimoirelab-core

Then use pip or Poetry to install the package along with its dependencies.

Pip

To install the package from local directory run the following command:

$ pip install .

In case you are a developer, you should install grimoirelab-core in editable mode:

$ pip install -e .

Poetry

We use poetry for dependency management and packaging. You can install it following its documentation. Once you have installed it, you can install grimoirelab-core and the dependencies in a project isolated environment using:

$ poetry install

To spaw a new shell within the virtual environment use:

$ poetry shell

To build the static files automatically you can install the pre-hook plugin included in the project. Each time you run poetry install or poetry build the static files will be built automatically:

$ poetry self add "$PWD/build/poetry-prehook"

If you prefer to build the static files manually, you can run:

$ poetry run python build/build-ui.py

Usage

$ grimoirelab
Usage: grimoirelab [OPTIONS] COMMAND [ARGS]...

  Toolset for software development analytics.

  GrimoireLab is a set of tools and a platform to retrieve, analyze, and
  provide insights about data coming from software development repositories.
  With this command, you'll be able to configure and run its different
  services.

  It requires to pass a configuration file module using the Python path syntax
  (e.g. grimoirelab.core.config.settings). Take into account the configuration
  should be accessible by your PYTHON_PATH. You can also use the environment
  variable GRIMOIRELAB_CONFIG to define the config location.

Options:
  --config TEXT  Configuration module in Python path syntax  [default:
                 grimoirelab.core.config.settings]
  --help         Show this message and exit.

Commands:
  admin  GrimoireLab administration tool.
  run    Run a GrimoireLab service.

Configuration

The first step is to run a Redis server, a MySQL database and an OpenSearch container that will be used for communicating components and storing results. Please refer to their documentation to know how to install and run them.

Configuration variables

By default, GrimoireLab runs using a configuration file defined at grimoirelab.core.config.settings. You can update that file or use environment variables to override the default values.

Configure the database

This command will create the database tables and the initial admin user.

grimoirelab admin setup

Run eventizer workers

Run the eventizer workers that will fetch data from the repositories and insert it into a Redis Stream.

grimoirelab run eventizers

Run archivist workers

Run the archivist workers that will read data from the Redis Stream and store it into OpenSearch.

grimoirelab run archivists

Run identities storage workers

Run the identities storage workers that will read data from the Redis Stream and store it into SortingHat database.

grimoirelab run ushers

Run the backend API

Run the backend API server that will provide a REST API to manage the repositories, jobs and identities.

It also provides a web interface to manage the platform.

grimoirelab run server --dev

Running tests

GrimoireLab core comes with a comprehensive list of unit and integration tests.

  • Unitary tests requires a SQL database running (MySQL or MariaDB).

  • Integration tests uses testcontainers to spawn temporary containers (MariaDB, Valkey, and OpenSearch).

(.venv)$ pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grimoirelab_core-0.1.0.tar.gz (62.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grimoirelab_core-0.1.0-py3-none-any.whl (2.8 MB view details)

Uploaded Python 3

File details

Details for the file grimoirelab_core-0.1.0.tar.gz.

File metadata

  • Download URL: grimoirelab_core-0.1.0.tar.gz
  • Upload date:
  • Size: 62.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure

File hashes

Hashes for grimoirelab_core-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d0aed132e0f28f084cf9374d663deb3797dd89de4a7902ffdf48e849c8baacbe
MD5 cc904a02e905e94fc7c6f7883116f618
BLAKE2b-256 6fad81035b07ecdf156c193203e2769cf1ceba96af03dad53bfc0553ae6a1cd5

See more details on using hashes here.

File details

Details for the file grimoirelab_core-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: grimoirelab_core-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure

File hashes

Hashes for grimoirelab_core-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f980564af0dde7e7301b874f8a8974242e594d9954fdae206bbfcfeedad33125
MD5 59817fefdface8f5a2a6eb0179a80968
BLAKE2b-256 60c31b5e5ddc6435b3ac4feea211a2f98b05c75c01b91ff9ce606a8bbb3db1e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page