Open source CI / CD orchestration for multi-environment releases

Map out dependencies and implement custom logic to make managing dev and production environments easy.

Environments as a first-class concept

environments.ocu.star
for i in range(1, 10):
    register_environment(environment(
        name=f"dev-{i}",
        attributes={
            "type": "dev",
            "region": "us-east-1",
        }
    ))

register_environment(environment(
    name="staging",
    attributes={
        "type": "staging",
        "region": "eu-west-2",
    }
))

Your team think about deployments in terms of the destination: dev, staging, production. But many CI solutions don't go beyond the pipeline, making adding an environment an all-hands-on-deck slog.

Got a big customer demanding a dedicated environment for their data? Need an EU region for GDPR? Want to spin up a load-testing environment? Good luck!

Ocuroot treats environments as a first-class concept, so adding or removing an environment can be as simple as editing a single file.

Escape YAML hell and long cycle times

Centralized, YAML-based CI solutions two big problems. You need to learn their particular YAML DSL to even do simple branching logic. And you have to push to the remote to test every, single, change.

Ocuroot configuration is defined with Python-like Starlark syntax. So if you need an if statement or a for loop, you can just write one. Plus you can run your logic locally for super-tight feedback loops.

There's even a REPL!

Terminal
$ ocuroot repl frontend/package.ocu.star

Starting Starlark REPL with Ocuroot SDK
Type Ctrl+D to exit (Ctrl+C will interrupt the current operation)
Type 'help()' to see available SDK modules
Loaded repo: quickstart
Loaded file: frontend/package.ocu.star
Available user functions: 3

>>> environments()
[struct(attributes = {"frontend_port": "8080", "type": "staging"}, dict = <function _env_to_dict>, json = <function _env_to_json>, name = "staging")]
>>> 

See what's running, where

An illustration showing an eye connected to various cloud resources, with an excess database crossed out

Follow the state of your infrastructure and applications in Ocuroot, and quickly shut down anything that's no longer needed.

With a complete view of your production resources, you can identify unused or underutilized instances, old test environments, and orphaned services that are costing you money without providing value.

Ocuroot makes it easy to track resource usage across all your environments, helping you maintain a lean and cost-effective infrastructure.

Try it for yourself!

Read this far and want to see Ocuroot in action? Why not try the quickstart?

Quickstart GitHub

Loading repository information...