# blauwe-lucht/gitlab-pipeline-workshop architecture

> Architecture diagram of the GitHub repository blauwe-lucht/gitlab-pipeline-workshop, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/blauwe-lucht/gitlab-pipeline-workshop
- Repository: https://github.com/blauwe-lucht/gitlab-pipeline-workshop

## Overview

This repository is a GitLab CI/CD workshop built around a small Roman-numeral CLI. The runtime path is straightforward: a user supplies one numeral, the CLI calls the converter, and prints the decimal result or an error. The README describes a progression through stages and jobs, artifacts, caching, rules, reuse, and a final solution with secrets and releases. The supplied tree contains the C++ snapshots but no lab configuration or pipeline definitions, so those workshop capabilities are documented here without inferred implementation links.

Main entry points: [`solutions/final/src/main.cpp`](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/solutions/final/src/main.cpp) (Final CLI), [`exercises/01-stages-and-jobs/src/main.cpp`](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/01-stages-and-jobs/src/main.cpp) (Stages and jobs), [`exercises/02-artifacts/src/main.cpp`](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/02-artifacts/src/main.cpp) (Artifacts), [`exercises/03-cache/src/main.cpp`](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/03-cache/src/main.cpp) (Dependency cache)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Roman CLI"]
  node_final_cli["Final CLI<br/>[main.cpp]"]
  node_final_converter["Roman converter<br/>[roman.cpp]"]
end

subgraph group_workshop["Workshop progression"]
  node_stages["Stages and jobs<br/>[main.cpp]"]
  node_artifacts["Artifacts<br/>[main.cpp]"]
  node_cache["Dependency cache<br/>[main.cpp]"]
  node_rules["Pipeline rules<br/>[main.cpp]"]
  node_reuse["Pipeline reuse<br/>[main.cpp]"]
  node_final_solution["Integrated solution<br/>[main.cpp]"]
end

node_user(("CLI user"))
node_gitlab["Local GitLab"]
node_runners["Two runners"]

node_user -->|"runs with numeral"| node_final_cli
node_final_cli -->|"calls converter"| node_final_converter
node_user -->|"starts learning"| node_stages
node_stages -->|"continues to"| node_artifacts
node_artifacts -->|"continues to"| node_cache
node_cache -->|"continues to"| node_rules
node_rules -->|"continues to"| node_reuse
node_reuse -->|"culminates in"| node_final_solution
node_user -->|"opens locally"| node_gitlab
node_gitlab -->|"coordinates jobs"| node_runners

click node_final_cli "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/solutions/final/src/main.cpp"
click node_final_converter "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/solutions/final/src/roman.cpp"
click node_stages "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/01-stages-and-jobs/src/main.cpp"
click node_artifacts "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/02-artifacts/src/main.cpp"
click node_cache "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/03-cache/src/main.cpp"
click node_rules "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/04-rules/src/main.cpp"
click node_reuse "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/05-reuse/src/main.cpp"
click node_final_solution "https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/solutions/final/src/main.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_final_cli,node_final_converter,node_user toneBlue
class node_stages,node_artifacts,node_cache,node_rules,node_reuse,node_final_solution toneAmber
class node_gitlab,node_runners toneIndigo
```

## Components

### Roman CLI

- [Final CLI](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/solutions/final/src/main.cpp): `solutions/final/src/main.cpp`
- [Roman converter](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/solutions/final/src/roman.cpp): `solutions/final/src/roman.cpp`

### Workshop progression

- [Stages and jobs](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/01-stages-and-jobs/src/main.cpp): `exercises/01-stages-and-jobs/src/main.cpp`
- [Artifacts](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/02-artifacts/src/main.cpp): `exercises/02-artifacts/src/main.cpp`
- [Dependency cache](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/03-cache/src/main.cpp): `exercises/03-cache/src/main.cpp`
- [Pipeline rules](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/04-rules/src/main.cpp): `exercises/04-rules/src/main.cpp`
- [Pipeline reuse](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/exercises/05-reuse/src/main.cpp): `exercises/05-reuse/src/main.cpp`
- [Integrated solution](https://github.com/blauwe-lucht/gitlab-pipeline-workshop/blob/main/solutions/final/src/main.cpp): `solutions/final/src/main.cpp`

### Other components

- **CLI user**
- **Local GitLab**
- **Two runners**

## Connections

- CLI user → Final CLI: runs with numeral (evidence: `README.md`)
- Final CLI → Roman converter: calls converter (evidence: `solutions/final/src/main.cpp`)
- CLI user → Stages and jobs: starts learning (evidence: `README.md`)
- Stages and jobs → Artifacts: continues to (evidence: `README.md`)
- Artifacts → Dependency cache: continues to (evidence: `README.md`)
- Dependency cache → Pipeline rules: continues to (evidence: `README.md`)
- Pipeline rules → Pipeline reuse: continues to (evidence: `README.md`)
- Pipeline reuse → Integrated solution: culminates in (evidence: `README.md`)
- CLI user → Local GitLab: opens locally (evidence: `README.md`)
- Local GitLab → Two runners: coordinates jobs (evidence: `README.md`)
