Skip to content

hadamrd/titan

Titan

A pull-based, database-backed pipeline execution engine for Jenkins.

License: MIT Status: pre-1.0 Java 21 Jenkins 2.555+

🚧 Pre-1.0. Titan is under active development and the APIs are not yet stable.

What it is

Titan is a Jenkins plugin that runs CI/CD pipelines with a pull-based, channel-less execution model:

  • Declarative pipelines. A pipeline is described in a titan-pipeline.yml file — stages, dependencies, steps, gates, retries — parsed and validated before it runs.
  • Pull-based workers. Work is published to a database task queue. Standalone Titan workers poll the queue, execute steps locally or in containers, stream logs back, and heartbeat. The controller never opens a connection to a worker.
  • Database-backed state. Pipeline, build, queue, and timer state live in a relational database (PostgreSQL or H2), with schema migrations managed by Flyway. Restarts and failovers recover from the database, not from in-memory state.

Architecture

Why this design exists, and how it fits together:

  • docs/01 — Motivation — where the classic Jenkins Pipeline model breaks: program.dat, XStream, stateful channels, CPS, the Kubernetes era, the shared-library trap.
  • docs/02 — Architecture — state in PostgreSQL, a task queue, pull-based workers, no persistent channels. With diagrams.
  • docs/03 — Tradeoffs — what Titan deliberately gives up to get there.

Modules

Module Description
titan-plugin The Jenkins plugin — controller, scheduler, UI. Builds titan.hpi.
titan-worker The standalone pull-based worker.
titan-step-api Public SPI for implementing pipeline step handlers.
titan-pipeline-model Pipeline parser, model, and grammar.
titan-db-core Shared JDBC pool and Flyway runner.
titan-artifact-s3 / titan-artifact-nexus Artifact store backends.
titan-keyprovider-infisical Infisical-backed credential key provider.

Build

Requires JDK 21. The build is self-contained via the bundled Maven wrapper — no system Maven needed.

git clone https://github.com/hadamrd/titan.git
cd titan
./mvnw clean package

The plugin is produced at titan-plugin/target/titan.hpi. Install it via Manage Jenkins → Plugins → Advanced → Deploy Plugin.

To run a development Jenkins with the plugin loaded:

./mvnw -pl titan-plugin hpi:run

Jenkins starts on http://localhost:8080/jenkins.

Tests

./mvnw verify

Integration tests use Testcontainers and require a running Docker daemon.

Contributing

See CONTRIBUTING.md for the development workflow and CODE_OF_CONDUCT.md for community expectations.

License

MIT.

About

A pull-based, database-backed pipeline execution engine for Jenkins.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors