Hermes CI is an open-source continuous integration platform mainly written in Go.
Hermes is the winged herald and messenger of the Olympian gods. In addition, he is also a divine trickster, and the god of roads, flocks, commerce, and thieves. ... Hermes was the only Olympian capable of crossing the border between the living and the dead.
DO NOT USE IT IN PRODUCTION
Status: The library is currently undergoing heavy development with frequent, breaking API changesç-.
- Backend: a web server written in Go receive code hosting platforms webhooks and schedule the job
- Queue: a Message broker written in Go and uses Asynq library
- Runner: a cross-platform Queue consumer written in Go and can run anywhere with docker
- Frontend: a web application written in Vue.js/Typescript (Nuxt) allows users to configure Hermes and show jobs logs/status
-
MongoDB server: make sure you update
.env
files in bothbackend
andrunner
-
Redis server (you can use dockernized version)
docker run --name my-redis -p 6379:6379 -d redis
- Buildah : a tool that facilitates building Open Container Initiative (OCI) container images.
- Backend
Fill the ./backend/env.example and rename it to ./backend/.env
make -C ./backend dev
- Runner
Fill the ./runner/env.example and rename it to ./runner/.env
make -C ./runner dev
- Client
Fill the ./client/env.example and rename it to ./client/.env
make -C ./backend dev
Hermes is listing to Github webhooks and run the Dockerfile
in your Repository for that you need to have:
- Dockerfile: put whatever you want on in it
FROM yauritux/busybox-curl
RUN echo "Running build"
RUN echo "We don't need to build anything"
RUN echo "Getting Ouarzazate weather"
RUN echo "weather is goood"
- Hermes.yaml: a Hermes config file for now accepts only
name
,version
,schema
and forschema
accepts onlydocker
for now
name: Build
version: 1.0.0
schema: docker