.. raw:: html
<img src="https://gist.githubusercontent.com/michelvocks/ef3894f63c3bb004bca1a2fd5f7eb644/raw/40c5799d74a6f28af1874e726083a50a3ebd877d/gaia-logo-text.png" width="650px">
|build-status| |go-report| |go-doc| |apache2| |chat| |codecov|
Gaia is an open source automation platform which makes it easy and fun to build powerful pipelines in any programming language. Based on
HashiCorp's go-plugin_ and
gRPC_, gaia is efficient, fast, lightweight, and developer friendly.
pipelines <What is a pipeline?_>_ with the help of
SDKs <Why do I need an SDK?_>_ and simply check-in your code into a git repository. Gaia automatically clones your code repository, compiles your code to a binary, and executes it on-demand. All results are streamed back and formatted as a user-friendly graphical output.
gaia-pipeline.io_ to learn more.
Automation Engineer, DevOps Engineer, SRE, Cloud Engineer, Platform Engineer - they all have one in common: The majority of tech people are not motivated to take up this work and they are hard to recruit.
One of the main reasons for this is the abstraction and poor execution of many automation tools. They come with their own configuration (
YAML_ syntax) specification or limit the user to one specific programming language. Testing is nearly impossible because most automation tools lack the ability to mock services and subsystems. Even tiny things, for example parsing a JSON file, are sometimes really painful because external, outdated libraries were used and not included in the standard framework.
We believe it's time to remove all those abstractions and come back to our roots. Are you tired of writing endless lines of YAML-code? Are you sick of spending days forced to write in a language that does not suit you and is not fun at all? Do you enjoy programming in a language you like? Then Gaia is for you.
Gaia is based on
HashiCorp's go-plugin. It's a
plugin system that uses
gRPC_ to communicate over
HTTP/2. Initially, HashiCorp developed this tool for
Packer but now it's heavily used by
Plugins, also called
pipelines <What is a pipeline?_>, are applications which can be written in any programming language, as long as
gRPC is supported. All functions, also called
jobs <What is a job?>_, are exposed to Gaia and can form up a dependency graph that describes the order of execution.
Pipelines can be compiled locally or simply over the integrated build system. Gaia clones the git repository and automatically builds the included pipeline. If a change (
git push_) happened, Gaia will automatically rebuild the pipeline for you*.
After a pipeline has been started, all log output is returned back to Gaia and displayed in a detailed overview with their final result status.
boltDB for storage. This makes the installation process super easy. No external database is currently required.
* This requires polling or webhook to be activated.
|sh-login| |sh-overview| |sh-create-pipeline| |sh-pipeline-detailed| |sh-pipeline-logs| |sh-vault| |sh-settings|
The installation of gaia is simple and often takes a few minutes.
Literally every tool that was designed for automation, continuous integration (CI), and continuous deployment (CD) like Spinnaker, Jenkins, Gitlab CI/CD, TravisCI, CircleCI, Codeship, Bamboo and many more, introduced their own configuration format. Some of them don't even support configuration/automation as code. This works well for simple tasks like running a
go install or
mvn clean install but in the real world there is more to do.
Gaia is the first platform that does not limit the user and provides full support for almost all common programming languages without losing the features offered by todays CI/CD tools.
What is a pipeline?
A pipeline is a real application with at least one function (we call it a Job). Every programming language can be used as long as gRPC is supported. We offer SDKs to support the development. What is a **job**? ~~~~~~~~~~~~~~~~~~ A job is a function, usually globally exposed to Gaia. Dependent on the dependency graph, Gaia will execute this function in a specific order. Why do I need an **SDK**?
The SDK implements the Gaia plugin gRPC interface and offers helper functions like serving the gRPC-Server. This helps you to focus on the real problem instead of doing the boring stuff.
Which programming languages are supported?
We currently fully support Go, Java, Python, C++, Ruby and Node.JS. When do you support programming language **XYZ**?
We are working hard to support as much programming languages as possible but our resources are limited and we are also mostly no experts in all programming languages. If you are willing to contribute, feel free to open an issue and start working.
Gaia is currently available as beta version.
Feel free to open a new GitHub issue to request a new feature.
Gaia can only evolve and become a great product with the help of contributors. If you like to contribute, please have a look at our
issues section_. We do our best to mark issues for new contributors with the label good first issue.
If you think you found a good first issue, please consider this list as a short guide:
Go installed_ on your machine and also
nodeJS_ for the frontend. Clone this repository and run the make command inside the cloned folder. This will start the backend. To start the frontend you have to open a new terminal window and go into the frontend folder. There you run npm install and then npm run serve. This should automatically open a new browser window.
If you have any questions feel free to contact us on
HashiCorp's go-plugin: https://github.com/hashicorp/go-plugin
Do not use it for mission critical jobs yet!: https://tenor.com/view/enter-at-your-own-risk-gif-8912210
releases page: https://github.com/gaia-pipeline/gaia/releases
Unix nice level: https://en.wikipedia.org/wiki/Nice_(Unix)
issues section: https://github.com/gaia-pipeline/gaia/issues
Go installed: https://golang.org/doc/install
go-example repo: https://github.com/gaia-pipeline/go-example
Kubernetes deployment with vault integration: https://docs.gaia-pipeline.io/tutorials/kube-vault-deploy/
git push: https://git-scm.com/docs/git-push
plugin system: https://en.wikipedia.org/wiki/Plug-in_(computing)
available docker image tags: https://hub.docker.com/r/gaiapipeline/gaia/tags/
how to develop a pipeline: https://docs.gaia-pipeline.io/develop-pipelines/
.. |build-status| image:: https://circleci.com/gh/gaia-pipeline/gaia/tree/master.svg?style=shield&circle-token=c0e15edfb08f8076076cbbb55558af6cfecb89b8 :alt: Build Status :scale: 100% :target: https://circleci.com/gh/gaia-pipeline/gaia/tree/master
.. |go-report| image:: https://goreportcard.com/badge/github.com/gaia-pipeline/gaia :alt: Go Report Card :target: https://goreportcard.com/report/github.com/gaia-pipeline/gaia
.. |go-doc| image:: https://godoc.org/github.com/gaia-pipeline/gaia?status.svg :alt: GoDoc :target: https://godoc.org/github.com/gaia-pipeline/gaia
.. |apache2| image:: https://img.shields.io/badge/license-Apache-blue.svg :alt: Apache licensed :target: https://github.com/gaia-pipeline/gaia/blob/master/LICENSE
.. |codecov| image:: https://codecov.io/gh/gaia-pipeline/gaia/branch/master/graph/badge.svg :target: https://codecov.io/gh/gaia-pipeline/gaia
.. |sh-login| image:: https://github.com/gaia-pipeline/gaia/blob/master/screenshots/login.png :alt: gaia login screenshot :width: 650px
.. |sh-overview| image:: https://github.com/gaia-pipeline/gaia/blob/master/screenshots/overview.png :alt: gaia overview screenshot :width: 650px
.. |sh-create-pipeline| image:: https://github.com/gaia-pipeline/gaia/blob/master/screenshots/create-pipeline.png :alt: gaia create pipeline screenshot :width: 650px
.. |sh-vault| image:: https://github.com/gaia-pipeline/gaia/blob/master/screenshots/vault.png :alt: gaia Vault screenshot :width: 650px
.. |sh-pipeline-detailed| image:: https://github.com/gaia-pipeline/gaia/blob/master/screenshots/detail-pipeline.png :alt: gaia pipeline detailed screenshot :width: 650px
.. |sh-pipeline-logs| image:: https://github.com/gaia-pipeline/gaia/blob/master/screenshots/logs-pipeline.png :alt: gaia pipeline logs screenshot :width: 650px
.. |sh-settings| image:: https://github.com/gaia-pipeline/gaia/blob/master/screenshots/settings.png :alt: gaia settings screenshot :width: 650px