current-web-pipelines
is a wrapper on top of ocurrent
pipelines that
provide tools to build complex interfaces, for example representing multi-stage
pipelines.
There are three modules:
('value, 'state) Task.t
is the equivalent of 'value Current.t
with extra
metadata of type 'state
. While the value might not be available (for example
because it is not computed yet), the state can be obtained at all time. Task
provides combinators and specialized constructors to construct a reactive state
structure that can be extracted and displayed in various ways.
('output, 'node_metadata, 'stage_metadata, 'pipeline_metadata) State.pipeline
is one example of state that can be bound to a task. This type represents the
state of a pipeline run, using the following structure:
- pipeline metadata
- stage list:
- stage metadata
- node tree list:
- node metadata
- output or status
This tree structure is displayed using the Web
module.
Use Web.Make
to create an instance of the website. The API requires to use:
make
to initializeupdate_state
to track the state of a pipeline run. In particular each pipeline run is bound to a source (the reason why it runs) and is part of a group.set_active_sources
to track which sources are still activeroutes
to providecurrent_web
with additional routes for the generated website
See the example/
folder for an end-to-end usage of current-web-pipelines
.
It's also deployed in mirage-ci, ocaml-docs-ci and
was used in tezos-ci.