EngFlow Free Tier is a single-node, standalone version of the EngFlow platform that implements a remote cache, remote execution service, and build web UI for Remote Execution v2 protocol clients such as Bazel.
EngFlow Free Tier may be used a remote cache and UI for any Bazel build. It can also execute remote actions in a Linux Docker container.
EngFlow Free Tier is distributed as a Docker image for x86_64 Linux. The images
are hosted by the GitHub container
registry. Run the
following to start up a EngFlow Free Tier instance that stores its data in
/tmp/engflow_data
:
$ docker run --init --rm --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock -v /tmp/engflow_data:/tmp/engflow_data -e DATA_DIR=/tmp/engflow_data -p 8080:8080 ghcr.io/engflow/free:2.8.0
Once EngFlow starts up, it will print configuration hints for Bazel. Try it out as a remote executor on your own Bazel project or on the EngFlow example repository:
$ git clone https://github.com/engflow/example engflow-example
$ cd engflow-example
$ bazel test --config engflow --bes_results_url=http://127.0.0.1:8080/invocation/ --bes_backend=grpc://127.0.0.1:8080 --remote_executor=grpc://127.0.0.1:8080 //java/...
Bazel should print a URL to view the EngFlow build UI for the build in a web browser.
EngFlow requires a Docker image to execute remote actions in, else the following error occurs:
ERROR: ... (Exit 34): INVALID_ARGUMENT: No matching action runner found (available: com.engflow.re.exec.docker.CachedDockerActionRunner@c4bf93d,com.engflow.re.exec.docker.DockerActionRunner@28c06c4), client-provided platform proto:
The EngFlow
example repository configures the image using the rbe_autoconfig
workspace
rule from
bazel-toolchains. For simple
usecases, an image may be passed via Bazel's --remote_default_exec_properties
flag. For instance,
--remote_default_exec_properties=container-image=docker://docker.io/ubuntu:focal-20210827
to run remote actions in a recent Ubuntu container.
EngFlow Free Tier may be started as a service through Docker Compose. A sample configuration of EngFlow
deployed as a service is demonstrated in the docker-compose.yml
file included in this repository.
The example demonstrates the configuration of the EngFlow remote execution service to use containers for
both local execution and remote runtime workers.
To start the EngFlow Free Tier and run build targets from the EngFlow example project, simply execute the following command from the top-level directory of this repository:
docker-compose up
EngFlow Free Tier can be deployed easily to various cloud providers through Docker Compose or directly as a container through Kubernetes, Amazon ECS, Azure Container Apps, Google Cloud Run and any other OCI-compatible container platform.
EngFlow stores its caches and logs in the location pointed to by the $DATA_DIR
environmental variable. Mount this location onto the host to preserve data
across container invocations and view the service logs. If remote execution is
used, $DATA_DIR
must have the same path on the host and in the
container. Additionally, the Docker Unix socket must be mounted into the
container to allow EngFlow to execute actions in Docker containers.
The size of disk dedicated to the CAS will be automatically calculated; it may
be manually specified with the --disk_size
flag.
The --default_replicate_timeout
flag should be set to twice the longest build
time to ensure the garbage collector can work efficiently to reclaim disk
space. It defaults to 24 hours.
Feel free to file an issue in the GitHub tracker.
By downloading this free version of EngFlow’s proprietary remote execution software (the “Software”), you agree to the following terms:
- Subject to your compliance with these terms, EngFlow, Inc. (“EngFlow”) hereby grants to you a limited, non-exclusive, non-transferable, non-sublicensable, revocable license during the agreed upon license term to install and operate the Software, solely for your internal use and subject to the limitations on CPU cores and machines. Any rights not expressly granted herein are reserved by EngFlow.
- You will not and will not permit any third party to copy, modify, reverse engineer, disassemble, decompile, decode or otherwise attempt to derive or gain improper access to any component of the Software or develop any product or service that may compete directly or indirectly with the Software.
- The Software is provided on an “AS-IS” basis and EngFlow disclaims all warranties, express or implied, with respect to the Software. EngFlow will not provide customer support obligations. You acknowledge that the Software is a free version, and accordingly, EngFlow will not be liable to you or any third party for any amounts with respect to the Software.
- At any time after your download and installation of the Software, without limiting EngFlow’s other rights or remedies, EngFlow has the right to audit your use of the Software to verify your compliance with these terms.