Scale out Docker builds
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.chart/furan chart & circle config Jul 17, 2018
.circleci chart & circle config Jul 17, 2018
cmd vault: configurable k8s auth path, retries Jul 17, 2018
docs docs/quickstart: specify that you have to manually add secrets in for… Jun 28, 2017
generated/lib Add Args map to BuildDefinition proto Sep 7, 2017
lib s3: make metrics collection optional Oct 11, 2018
migrate migrations stubs May 25, 2016
protos Add Args map to BuildDefinition proto Sep 7, 2017
rpcclient rpcclient: fake client Jun 12, 2018
vendor update dep Jul 17, 2018
.gitignore gitignore Jul 17, 2018
Dockerfile proper workers and concurrency setup, fix Docker build Jun 7, 2016
Gopkg.lock update to dep 0.5.0 Oct 11, 2018
Gopkg.toml Update samara and samara-cluster May 15, 2018 docs [skip build] Jun 16, 2016
LICENSE readme copyedit, license, begin a quickstart Apr 11, 2017
Makefile Create release Makefile task Sep 29, 2017 readme: move badge down Aug 22, 2017 rename pb package back to lib for backwards-compatibility Aug 1, 2017 newrelic: instrument github_fetch as external segments Sep 7, 2017 docker-compose: use restart policy Sep 7, 2017
docker-compose.yml docker-compose: pin scylla image version Jul 16, 2018
local_dev_secrets.json docker-compose: use vault-dev image and local secrets Jun 6, 2017
main.go initial stubs May 19, 2016 datalayer tests and a few fixes Oct 6, 2016



Scale out Docker builds

Go Report Card

Furan is a horizontally-scalable Docker build microservice (API) that builds and pushes Docker images from a specified GitHub repository to a specified target (registry or S3).


What is Furan's advantage?

  • Furan is fast! Optimized for build speed, Furan runs operations in memory instead of disk. Optionally, it can be configured to run all builds within a RAM disk. Furan streams directly from GitHub to a local Docker daemon without temporary files.

  • Furan is stateless! Furan is deployed as an essentially stateless API application, allowing it to be scaled out. Furan does not shell out to execute docker commands. It leverages the Docker Engine API.

  • Furan is hookable! Furan is triggered on demand via GRPC or HTTPS. Builds can be triggered on one node and monitored on any other (allows round-robin load balancing).

  • Furan supports Docker pushs and S3 Deploys! Furan supports pushing to Docker registries (public or private) as well as pre-squashing and deploying tarballs directly to S3.

  • Furan is secure! Furan integrates with Vault for secure storage of service credentials (Docker registries, AWS). Furan supports token and AppID authentication.

  • Furan is instrumented! Furan has full Datadog integration so you can monitor the size of your docker images over time, build durations, build failures and more. Screenshot


The native API for Furan is based on GRPC and supports a number of RPC calls. See the protobuf definition for details.

An HTTPS adapter is available for testing convenience.



See the help output for full details: furan --help