SOFTWARE & DEVOPSSHIPPED

Minimal CI Server

A continuous-integration server built from scratch in Java: git checkout, Maven builds, test execution, and GitHub commit-status reporting on every push — with ~70% test coverage on the server itself.

ROLECore pipeline orchestration
TEAM5-person team, KTH DD2480
TIMELINEJan 2026 — Mar 2026
CATEGORYSoftware & DevOps

~70%

CODE COVERAGE

4

PIPELINE STAGES

5

TEAM SIZE

Overview

Everyone uses CI; almost nobody has built one. For KTH's DD2480 (Fundamentals of Software Engineering), our 5-person team built a minimal CI server in Java that does what Jenkins does at its core: listen to GitHub push events, build the code, run the tests, and report the result back to the commit.

What I did

  • Implemented the core pipeline orchestration — the sequencing engine that runs git checkout → Maven build → test execution → GitHub commit-status reporting for every push event, with each stage's failure handled and reported distinctly.
  • Developed the GitCheckout service, which clones repositories and checks out the specific pushed commit into an isolated temporary workspace per build, so concurrent builds can't contaminate each other.
  • Used dependency injection to decouple status reporting from execution logic — the pipeline doesn't know whether it's talking to the real GitHub API or a mock, which made the test suite possible without live API calls.
  • Helped enforce a two-stage branch protection workflow (feature → dev → main) with mandatory two-reviewer approval and passing CI on every merge.

Engineering discipline

The meta-joke of the project: the CI server was itself developed under CI, with ~70% code coverage across unit and integration tests. Building the tool and being its first user is a tight feedback loop — every pain point in our own workflow became a fix in the product.

Source

Code and documentation: github.com/a-runebou/DD2480-CI-V

APPENDIX A // MEDIA

IMAGE SLOT — AWAITING UPLOAD

FIG.01 — PIPELINE ARCHITECTURE DIAGRAM

IMAGE SLOT — AWAITING UPLOAD

FIG.02 — COMMIT STATUS REPORTING ON GITHUB