Core:
Analysis.quick_stat for faster stats (@talex5 #239). With large pipelines (above 20,000 boxes or so) collecting the Prometheus stats for pipeline states was getting slow.Web UI:
Docker plugin:
Current_docker.Raw.peek (@talex5 #226). This can be used to check the latest version of an image without pulling it.Git plugin:
--init with git submodule update --init --recursive (@talex5 #224). Otherwise, it's not really recursive.GitHub plugin:
allowlist for permitted usernames and make it case-insensitive (@avsm #210, @Julow #211).Examples:
Build fixes and cleanup:
ppx_deriving_yojson (@talex5 #209).Option.map (@talex5 #216)capnpc is the old name, and isn't present on Windows.ocaml/opam as the base image for the Dockerfile (@avsm #230).Cmdliner.Term.term_result for correct error handling (@talex5 #241).The main changes are:
docker pull to check for updates to an image it will continue using the old one until the check finishes. Jobs with latched results are scheduled at a lower priority than jobs without any output yet.Core:
Pool.of_fn so that users can provide their own pools. This allows waiting for resources from an external service before marking a job as started.Current_cache.Generic to control latching behaviour (@talex5, #179). This provides the full API. BUILDER and PUBLISHER are now special cases of GENERIC.Option.get crash when shutting down (@talex5, #205). If an error occurs on startup and a cache entry has expired then we set config to None to exit the engine, and the timer thread tries to read the config and crashes, hiding the real error.Current_cache.output to new Instance submodule (@talex5, #201). The name "output" came from before the build and publish caches were unified and was confusing.?cwd to Current.Process.exec (@kit-ty-kate, #177).Lwt (@talex5, #192). Using Unix.unlink was causing high latencies in some cases.Web UI:
Improvements to query page (@talex5, #196).
Site and Context modules (@talex5, #170).Add a basic access control system (@talex5, #172).
Site now takes authn and has_role arguments.authn (if given) is used to create a "Login" link in the navbar.has_role is used to decide who can access which resource.Diagram generation:
with_context (@talex5, #197).longer than 16384?.Docker plugin:
Raw module with low-level API (@talex5, #168). This is useful if you need to create your own custom components (for example, because you want to use a Current.t input to generate one of the fixed arguments such as ~run_args). See examples/docker_custom.ml for an example.Git plugin:
?pool argument to Git.with_checkout (@talex5, #184). Git checkout operations can use a lot of CPU and IO, so allow users to supply a pool to limit the number of concurrent operations.Commit_id.pp_user_clone public (@talex5, #176). Also, Commit.id now returns a Commit_id.t. Use Commit.hash to get the hash.refs/pull/NNN/head branches when fetching, not when cloning (with the default refspec). Detect this case and show an alternative command that the user can run to reproduce the operation.GitHub plugin:
Installation.repositories ?include_archived option (@talex5, #203). Filtering archived repositories is now the default. There's not much point doing CI on them as you can't write the status result back.GitHub.Installation.account to get account name (@talex5, #204).Api.Anonymous.head_of (@talex5, #200). This allows monitoring the head of a public GitHub repository without needing an OAuth token. It's useful for the ocaml-ci-local command, allowing users to test the pipeline easily.Slack plugin:
Build:
The main new feature is that OCurrent now evaluates pipelines incrementally. This means that services with large pipelines (such as ocaml-ci, with around 10,000 stages) can decide what they need to do without using an excessive amount of CPU time.
Engine.update (@talex5, #135)Current.list_map (@talex5, #148)Documentation:
Docker plugin:
?build_args parameter to Current_docker build (@SquidDev, #102)Docker.build (@talex5, #111)Docker.pread to get container stdout as a string (@kit-ty-kate, #120)Git plugin:
GitHub plugin:
Github.Api.head_of to track individual branches (@talex5, #114)refs function to get access to branch names and PR numbers (@talex5, #123)Commit.uri to make links back to GitHub (@talex5, #131)Web UI:
Dependencies:
Bug fixes:
catch/state nodes (@talex5, #134)Metrics:
Build improvements:
Other:
--confirm values (@CraigFe, #108)Input to Primitive and simplify the API (@talex5, #154)Lwt_main.yield while testing log patterns (@talex5, #155)Current.collapse to allow collapsing parts of diagrams (@talex5, #152)Current.with_context to help with diagram layout (@talex5, #159)Initial release.