furan

command module
v2.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2023 License: MIT Imports: 1 Imported by: 0

README

Furan

Furan 2


Scale out Docker builds


Go Report Card

Furan 2 is a scalable, Kubernetes-native Docker build microservice (API) that builds and pushes Docker images from a specified GitHub repository to a specified image repository.

Furan supports gRPC and JSON clients, and runs builds asynchronously using BuildKit in single-shot, rootless Kubernetes Jobs.

Furan supports pushing build artifacts to the following image repository services:

(Both public and private image repositories are supported.)

Expressed in plain English, Furan handles build requests such as:

"Build the GitHub repository acme/foo at commit SHA xxx using the Dockerfile in the root, and push the resulting image to the image repository at quay.io/acme/foo:tagname."

Furan is a core part of the Dollar Shave Club software delivery pipeline and is used programmatically by services such as Acyl.

Architecture

Furan's only runtime dependencies are PostgreSQL and Kubernetes.

Architecture

API

At a high level, the Furan API consists of the following RPCs:

  1. StartBuild (asynchronously begin a build/push job)
  2. MonitorBuild (get a realtime stream of build messages for a running job)
  3. GetBuildStatus (get the status of a running job)
  4. ListBuilds (get a list of build jobs according to a set of criteria)
  5. CancelBuild (abort an actively running job)

For more details, see the protobuf definition.

Differences between Furan 1 and 2

Furan 1 did not require Kubernetes, and executed builds in the same server process via an external Docker Engine. If running in Kubernetes, this was a Docker-in-Docker (DinD) sidecar. To support the asynchronous API, Furan 1 had a large set of dependencies including Kafka, Consul and Cassandra/ScyllaDB.

In contrast, Furan 2 has greatly decreased runtime dependencies, simplified deployment and more efficient use of compute resources and now requires Kubernetes. Furan 2 uses BuildKit instead of Docker Engine and uses rootless build jobs by default. Furan 2 also now supports build cache.

···

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
pkg
client
Package client is an abstract API client for a Furan RPC service using API key authentication
Package client is an abstract API client for a Furan RPC service using API key authentication
s3

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL