package datakit-ci

  1. Overview
  2. Docs

Datakit CI

Datakit_ci is a library to describe reproducible, cachable and distributed computations. The library is specialiazed to handle build pipelines, where computations can take time, and where seeing the live outputs of the computation is as useful as the final step (think of live-logs of long-running builds).

The Core of Datakit_ci are termcombinators to describe the composition of long-running computation jobs, with an attached, individual output (which can be live). A project configuration tied together a collection of job description and a simple description for the web interface, whose access is granted using ACLs.

TODO.

Core

Datakit client library.

module Live_log : sig ... end
module Output : sig ... end
type 'a status = {
  1. result : ('a, [ `Pending of string * unit Lwt.t | `Failure of string ]) result;
  2. output : Output.logs;
}

The type for term status. It is a mix between the usual error monad, but where we also keep a local log for every computation. Morever, computation can be long-running, so there is a new `Pending state with an indication of when the term is complete.

type job_id

The type for job IDs. They are used to identfy the worker actually doing the computation.

module Target : sig ... end
module Term : sig ... end
module ACL : sig ... end
module Web : sig ... end
module Config : sig ... end
val run : ?info:Cmdliner.Term.info -> Config.t Cmdliner.Term.t -> unit

run ?info config runs DataKitCI. info defaults to a term that describes the binary as DataKitCI, but does not include any of the other metadata such as versioning. Call Cmdliner.Term.info directly to obtain an info value that exposes all this extra data on the resulting command line.

val logs : Live_log.manager

The singleton log manager.

Extensions

module Process : sig ... end
module Monitored_pool : sig ... end
module Git : sig ... end
module Docker : sig ... end

Cache

module type BUILDER = sig ... end
module Cache : sig ... end

Utils

This should probably be replaced by something else or not be exposed at all.

module Utils : sig ... end

/ *

module Private : sig ... end