Architecture

Friendly Jenkins follows a three-tier design: a Jenkins controller, one or more Docker-capable agents, and reusable shared library + templates that define every environment.

High-Level View

system-overview

Data Flow

data-flow

Components

  • Jenkins Master: orchestrates jobs, stores configuration, exposes UI.

  • Jenkins Agents: run Docker Compose commands; multiple labels for workload separation.

  • Shared Library (qa-shared): Groovy utilities for templating, backups, health checks, locks, cleanup.

  • Application Templates: YAML + .env + optional configs per service, rendered per environment.

  • Storage:

    • Master: /var/jenkins_home/qa-data/envs/<env>/ for rendered artifacts and metadata.

    • Agents: /opt/qa-envs/<env>/ for runnable compose stacks and backups.

Deployment Topology

  • Each environment receives its own Docker network and per-service volumes.

  • Compose services adopt the naming pattern <env>_<service>_1.

  • Auto-generated depends_on is derived from dependencies.yaml.

  • Health checks and backups are built into deployment/update steps.