Giter Club home page Giter Club logo

cosmic-river's Introduction

cosmic-river

Minimalistic event-driven message oriented middleware GitHub automation for bigger/small organisations or individuals

Rationale:

Cosmic river has been designed with the aim of ensuring that it satisfies the requirements of both application developers as well as toolmakers for Github based events. Cosmic-river will collect all the GitHub events and dispatch them to specific clients. The clients can react by the events with specific handlers.

Also tool/application developers will have an universal API on events, where they can bind their application without any development cost.

Note that by by its universality, cosmic-river can be applied in different domains. It can be applied in all domains where event-driven automation based on GitHub make sense.

As example consider this use-case:

Release automation:

  • you can watch a specific issue beeing closed, cosmic-river server will notify the cosmic-river clients, which will perform custom actions.

  • consider the https://github.com/kubernetes/kubernetes publish a new release, cosmic-river can trigger automatically the needed automation for making a new package for your distro, testing it with your tool

Testing, CI, Automation:

  • automation on Pull-Requests, etc.

Event Notifications:

  • get notified with an Issue is closed, or any other particular event occurs.

Team Metrics/Events:

  • you could trigger specific actions/workflows, or simply gather data thanks to specifics events

Layout of repo:

This repository contains basically two clojure projects.

  • cosmic-river (server)
  • criver-client

Cosmic-river server aims to distribute the GitHub events to the message-brokers.

The criver-clients will consume these events, filtering them and triggering the automation needed.

Community:

You can join #cosmic-river at https://clojurians.slack.com/

or open a thread at http://clojureverse.org/,

or feel free to open an issue here for technical details.

Roadmap:

https://github.com/MalloZup/cosmic-river/projects/2

License

Copyright ยฉ 2019 Dario Maiocchi

cosmic-river's People

Contributors

mallozup avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

cosmic-river's Issues

listen to other events then repository events

Implement something like this for future, it should be possible to listen to other events then repository events, since currently this the only one possible.

;; this specify which events we want to listen to and notify then.

;; public is in GitHub terminology what is not private.

{:criver-config {
             ;; full-repo-name: owner/repo-name,  events: this are the events which you are interested for
             ;; https://developer.github.com/v3/activity/events/

             ;; TODO: issue event of repository isn't implemented
             ;; this events are targeting a repository. there are others for user/orgs which are interesting too. (later)
             :repository-events [
               {:full-repo-name "MalloZup/fullrocketmetal" :events["repository", "issue"]},
               {:full-repo-name "MalloZup/missile" :events["repository"]},
               {:full-repo-name "MalloZup/kubeojo" :events["repository"]},
             ],

             ;; -----  TODO: THIS IS NOT implemented ----------------
             ;; implement this later on
             ;; user events
             :user-events [
             ;; user-full contains also the private and public events  (need authentication
             ;; public contains only public events
               {:user "MalloZup" :events["user-full"]},
             ],
             :organisation-events [
             ;; organisation public events
               {:organisation "openSUSE" :events["org"]},
             ]
            ;; --------------------------------------------------------------
            ;; rabbitmq or kafka
            :message-broker {:type "rabbitmq" :config {
                                                       ;; TODO: exchange-name it might be passed to each event. Here is global
                                                       :exchange-name "branzino"}
                            }
}}

basic improvment for server (timeout and command line)

  • we need to add a sleep timeout for daemon configurable for the server.
  • we need to seprate first basic things as CLI:
    ** init function need to initiate various connection => done
    ** start function will launch the server as daemon => done

Pass payload to environ variable

pass the payload which contains all the metadata of an event to a ENV variable which can be accessed by the script handler so this can be filtered

LOGO for cosmic-river

A River plus a cosmos would be great or any other ideas reflecting the name ๐Ÿš€

make the server daemon

  • Every 5 min or customizable timeout, watch for new events
  • make the daemon function to main

later

  • implement config file location as parameter

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.