/hermes-ci

Hermes CI is an open-source continuous integration platform

Primary LanguageVue

Hermes CI

Hermes CI is an open-source continuous integration platform mainly written in Go.

Name

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.

Stability and Compatibility

DO NOT USE IT IN PRODUCTION

Status: The library is currently undergoing heavy development with frequent, breaking API changesç-.

How it works

Components

  • 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

requirement

  • MongoDB server: make sure you update .env files in both backend and runner

  • 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.

Run dev

  • 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

Repository configuration

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 for schema accepts only docker for now
name: Build
version: 1.0.0
schema: docker