Brocan (pun intended) is a feature-wise simple but architecturally a bit more complex continuous integration system that's been developed as a university project.
Eye-candy web UI, deployments and stuff like that should not be expected from Brocan. The focus was mainly on the introduction of microservices rather than a wide feature set.
Brocan is capable of
- Producing brocan builds
- Builds are triggered upon changes through webhooks
- Supported repository providers: GitHub (others can be added easily)
- Serving data regarding the finished and currently executing builds.
Please refer to the scripts and instructions in the deployment folder for building and running Brocan.
- components - The components that make up Brocan.
- deployment - Deployment scripts for various configurations and environments.
- docs - Documentation for processes, architecture and alike.
Please head to the What happens when... article to get a better understanding, how Brocan works.
For the fancy stuff, look at the docs/presentations folder.
A friendly enumeration of the techs/components/libraries used by Brocan
- docker - All services are containerized and builds run in a container as well.
- ElasticSearch + Kibana - Logs (by internal services and by build containers) are stored in ElasticSearch and are searchable using Kibana.
- Faktory - Queue for the builds.
- Hemera - JS Microservice Framework built upon NATS. Although I wanted Brocan to be language- and framework-agnostic, I settled with Hemera to speed up the development.
- MongoDB - Storage for build and execution data.
- NATS - Messaging system with tremendous performance and nice language support.
- Redis - Only used as a simple K/V storage for various purposes.
- Scope - Used for monitoring Brocan.