Skip to content

Releases: ocurrent/ocurrent

0.6.6

05 Feb 13:05
bfc886e
Compare
Choose a tag to compare

CHANGES:

Other:

0.6.5

31 Jan 14:28
Compare
Choose a tag to compare

CHANGES:

API:

  • Add Current_term.observe to evaluate the current state of a term. (@TheLortex, #374)
  • Add up_args to Current_docker.compose_cli (@maiste, #418)
  • Add support for buildx in Current_docker.build (@maiste, #418)
  • Add auth to Current_docker.pull (@maiste, #423)
  • Add ability to directly construct Current_git.Commit.t values (@ElectreAAS, #442)

Plugins:

  • GitHub: Fetch most relevant PRs and branches by update dates (@punchagan, #421)
  • Docker: Add Prometheus metrics for Docker operations (@benmandrew, #430 #437 #440)
  • Git: Add Prometheus metrics for git clone, git fetch, and git submodule update (@benmandrew, #430)

Other:

0.6.4

28 Feb 17:22
Compare
Choose a tag to compare

CHANGES:

API:

  • Add an `Active `Waiting_for_confirmation state, allows manual
    confirmation to run a task. (@kit-ty-kate @maiste, #269)
  • Add Current_term.option_iter. (@kit-ty-kate, #403)
  • Add Current_term.cutoff operation to decide whether changes should
    propagate according to an equality function. (@art-w, #409)
  • Expose ?eq parameter for Current_term.map and Current_term.bind. (@art-w, #409)

Web UI:

  • Allow controlling and disabling the refresh timer for pipelines
    graphs and job page. (@MisterDA, #398, #400)
  • Shorten the PR labels (remove commit date and messages). (@kit-ty-kate, #399)

Plugins:

  • GitHub: Add information about labels in Api.Ref.pr_info. (@ElectreAAS, #402)
  • SSH: Add a plugin for running ssh commands. (@mtelvers, #401)

Other:

0.6.3

12 Dec 03:23
72dc453
Compare
Choose a tag to compare

CHANGES:

Web UI:

API:

Plugins:

Other:

0.6.2

21 Jun 01:52
64a208a
Compare
Choose a tag to compare

CHANGES:

Web UI:

  • Update prometheus-app to support version 1.2.

Plugins:

  • GitLab plugin depend on ocaml-gitlab >= "0.1.4" to include bugfixes.

0.6.1

02 Jun 02:03
1be4fea
Compare
Choose a tag to compare

CHANGES:

Web UI:

API:

Plugins:

  • GitLab: support GitLab clone fork and fetch MR branch. (@MisterDA, #346)

  • Git: Fix handling of git repositories with submodules. (@talex5, #345)

  • GitLab: Fix ref filtering bug for GitLab (@tmcgilchrist, #332)

Other:

0.6

07 Apr 06:31
bbb3724
Compare
Choose a tag to compare
0.6

CHANGES:

Core:

  • Implement labelling of clusters on the Graphviz diagram
    (@ewanmellor #255)

  • Abort propagation on constant/equal changes (@art-w #318)

API:

Web UI:

  • Use Lwt.pause instead of Lwt_unix.yield (@MisterDA #297)

  • Use ansi instead of current_ansi (@samoht #321)

  • Show line numbers and allow jumping to specific lines in job
    logs (@punchagan #309)

Docker:

  • Explicitly set confirmation levels to allow for
    manually triggered jobs. (@tmcgilchrist #304)

  • Stop using Dockerfile.t completely and use strings instead.
    (@MisterDA #301 #316)

Other:

v0.5

05 Jun 16:39
439d1b5
Compare
Choose a tag to compare

CHANGES:

Web UI:

Windows support:

API:

  • GitHub: add staleness argument to allow ignoring inactive branches (@patricoferris #231).

  • GitHub: add default_ref to get the default branch name (@patricoferris #231).

  • Git: expose Current_git.Local.repo (@ewanmellor #257).
    This means that callers can use this for debugging or labelling.

Other:

v0.4

23 Dec 13:54
1f58770
Compare
Choose a tag to compare

CHANGES:

Core:

  • Optimise the SQL query for the Query page, by adding an
    index on the finish time and doing a case-insensitive
    search (@talex5 #215).

  • Remove in-memory cache entries when no longer needed (@talex5 #235).

  • Provide 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.

  • Improve error message if a cancel hook raises (@talex5 #214).
    Say which job raised the error.

Web UI:

Docker plugin:

  • Add an architecture flag in the Docker builder to enable
    multiarch builds (including 32-bit) (@avsm #213).

  • Add Current_docker.Raw.peek (@talex5 #226).
    This can be used to check the latest version of an image without pulling it.

  • Add Docker Compose support to the Docker plugin (@avsm #228).

  • Log in before creating manifests (@talex5 #232).
    Otherwise, we may hit the anonymous use limit.

Git plugin:

  • Use --init with git submodule update --init --recursive (@talex5 #224).
    Otherwise, it's not really recursive.

GitHub plugin:

  • Use the term allowlist for permitted usernames and make it case-insensitive (@avsm #210, @Julow #211).

  • Handle larger numbers of app installations (@talex5 #219).
    GitHub sends them in batches, and we previously only used the first batch.

Examples:

  • Replace custom logging in examples with Prometheus defaults (@talex5 #241).

Build fixes and cleanup:

  • Adapt to the Alcotest 1.2 interface (@talex5 #212).

  • Add missing dependency on ppx_deriving_yojson (@talex5 #209).

  • Remove unused Option.map (@talex5 #216)

  • Switch from "capnpc" to "capnp compile" (@MisterDA #233).
    capnpc is the old name, and isn't present on Windows.

  • Switch to ocaml/opam as the base image for the Dockerfile (@avsm #230).

  • Use Cmdliner.Term.term_result for correct error handling (@talex5 #241).

v0.3

08 Jul 09:22
157d15d
Compare
Choose a tag to compare

CHANGES:

The main changes are:

  • "latching" of a previous pipeline stage output while building the new one.
    For example, while doing 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.

  • Many improvements to the web UI, including access controls, streaming of
    logs, improved querying, and custom extra pages.

Core:

  • Allow user-defined pools (@talex5, #206).
    Add 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.

  • Add simple job priorities (@talex5, #187).
    Pools now have high and low priority queues.
    The cache puts jobs on the low priority queue if they have a latched result available.

  • Allow jobs to latch previous output while rebuilding (@talex5, #178).
    If a rebuild is triggered by the schedule, do the rebuild in the background
    without changing the output to pending. This allows polling for changes
    without disrupting the rest of the pipeline.
    Such jobs are displayed with a gradient background (from the pending
    colour on the left to the latched output's colour on the right).

  • Add Current_cache.Generic to control latching behaviour (@talex5, #179).
    This provides the full API. BUILDER and PUBLISHER are now special cases of GENERIC.

  • Also latch failed results when cache entries expire (@talex5, #202).

  • Don't clear latched result when auto-cancelling (@talex5, #195).

  • Fix rebuilding of stale cache entries (@talex5, #169).
    If a build was already invalid when we loaded it from the database, we invalidated the key but didn't trigger an update properly.

  • Fix 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.

  • Fix scheduled builds for very fast jobs (@talex5, #185).
    We cleared the expiry timer when the job reported an active state. However,
    if the job was very quick (no async operations) we wouldn't see this state.
    Then we'd think the old timer was still in place and would be good to handle
    the new deadline too. Reported by Kate.

  • Move 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.

  • Handle uncaught exceptions in monitor read functions (@talex5, #191).

  • Add missing ?cwd to Current.Process.exec (@kit-ty-kate, #177).

  • Delete directories with Lwt (@talex5, #192).
    Using Unix.unlink was causing high latencies in some cases.

Web UI:

  • Improvements to query page (@talex5, #196).

    • Add toggles to query page to allow rebuilding multiple jobs at once.
    • Filter by job ID prefix in the query page. This makes it easy to restrict results to a particular day (or month, hour, etc).
    • Filter by operation type in query page.
    • Allow filtering by rebuild status in query page.
    • Show job queue time and run time in query page.
  • Stream log files (@talex5, #165).
    If the job is still running, keep the connection open and stream the data as it arrives.

  • Add Site and Context modules (@talex5, #170).

  • Auto-generate links in nav-bar from routes (@talex5, #182).
    Expose routes in web API. This allows the user to provide whatever routes they like, or to use their own server.

  • Update to new Routes API (@anuragsoni, #189 #190).

  • 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.
    • The GitHub plugin now provides an authentication backend that authenticates users with GitHub.
  • Display the build history in the job page (@talex5, #166).
    Allows navigating to previous build results easily.

Diagram generation:

  • Extend, rather than replace, the context in with_context (@talex5, #197).

  • Truncate long tooltips in Graphviz diagrams. Graphviz rejects long messages with the error longer than 16384?.

Docker plugin:

  • Return the RepoId after pushing a manifest (@talex5, #207).

  • Add 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:

  • Add ?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.

  • Make Commit_id.pp_user_clone public (@talex5, #176).
    Also, Commit.id now returns a Commit_id.t. Use Commit.hash to get the hash.

  • Fix clone instructions for GitHub PRs (@talex5, #164).
    GitHub only provides the 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:

  • Get all installation repositories, not just the first 30 (@talex5, #193).
    For now, as a precaution, ignore any installation that has configured all repositories to be tested (this is likely an accident).

  • If listing repositories fails, retry after 30s (@talex5, #198).

  • Add 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.

  • Add GitHub.Installation.account to get account name (@talex5, #204).

  • Add 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.

  • Catch cohttp end-of-file exceptions (@talex5, #175).

  • Remove unicorn from error string (@talex5, #183).
    When a GraphQL query returned a server error, we previously returned the body
    of the HTTP response as the error message. However, this includes a large
    picture of a unicorn, which is not suitable as an error string.

Slack plugin:

  • Upgrade TLS library to cope with Slack's new TLS policy (@talex5, #174 #194).

Build: