Skip to content

ls1intum/hades

Folders and files

NameName
Last commit message
Last commit date
Mar 18, 2025
Jan 26, 2024
Aug 14, 2024
Mar 13, 2025
Mar 13, 2025
Mar 13, 2025
May 24, 2024
Mar 24, 2025
Mar 13, 2025
May 31, 2024
Sep 25, 2023
Aug 14, 2024
Aug 14, 2024
May 14, 2024
Aug 13, 2024
Jan 3, 2025
Mar 13, 2025

Repository files navigation

HadesCI: Scalable Continuous Integration for Programming Exercises

Welcome to HadesCI, a robust Continuous Integration (CI) tool designed with scalability in mind. HadesCI's primary mission is to provide a straightforward, scalable, and adaptable CI solution tailored for executing build jobs in large-scale programming courses.

Design Goals

HadesCI embodies several core design principles:

  • Simplicity: Unlike many other CI implementations, HadesCI focuses on delivering just the essentials required to execute build jobs efficiently.

  • Scalability: HadesCI has scalability at its core, capable of queuing and executing a vast number of build jobs in parallel, making it ideal for large-scale operations.

  • Container-Based: HadesCI executes build jobs within containers, ensuring a high level of isolation and security between jobs.

  • Kubernetes Native: As a Kubernetes-native solution, HadesCI leverages the power and flexibility of Kubernetes as its primary execution platform.

  • Extensibility: HadesCI is designed to be highly extensible, allowing for easy integration with other build execution platforms as needed.

Architecture

HadesCI is built upon the following key components:

  • API: Serving as the main entry point, the API handles all incoming requests

  • Queue: The queue component is responsible for managing the queue of build jobs, ensuring efficient scheduling.

  • Scheduler: The scheduler orchestrates the execution of build jobs, coordinating with the executor components.

    • Docker Executor: Designed for local development, the Docker executor is responsible for running build jobs within Docker containers.

    • Kubernetes Executor: Intended for production use, the Kubernetes executor executes build jobs within a Kubernetes cluster.

Getting Started

Prerequisites

Running in Docker Mode

To run HadesCI in Docker mode, follow these steps:

  1. Copy the .env.example file to .env.
    • The default is to use docker as the executor!
    • Changes should not be necessary for a local test.
  2. Start the HadesCI services using Docker Compose
docker-compose -f docker-compose.yml up -d

Running in Kubernetes Mode

We assume that you have a Kubernetes cluster running and a kubeconfig file to connect to it.

To run HadesCI in Kubernetes mode, follow these steps:

  1. Copy the .env.example file to .env.
    • Change the HADES_EXECUTOR variable to kubernetes.
  2. Adjust the Kubeconfig volume mount in the docker-compose.k8s.yml file.
  3. Start the HadesCI services using Docker Compose
docker-compose -f docker-compose.yml -f docker-compose.k8s.yml up -d