Git Product home page Git Product logo

bob's People

Contributors

aldosolorzano avatar amexboy avatar anupriyajo avatar emgrasmeder avatar jarohen avatar josephkiranbabu avatar josephnuthalapati2244 avatar juhmelo avatar lispyclouds avatar prachisr avatar timokramer avatar yurii-cliqz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bob's Issues

Make REST paths more semantic

Add descriptive paths to make values more readable.
eg for logs:

http://bob:7777/api/pipeline/logs/group/dev/name/test/run/1/offset/0/lines/50

timestamp logs?

Hammock for moving to a record per log format, easier to timestamp and stream logs.

Hammock time for OS specific executions

How should builds which depend on specific OS features like MacOS/iOS builds which need OS specific build tools and features be done?
These are platforms which do not support Docker natively yet.

MUCH better site for newcomers.

As a newbie and/or contributor to Bob, the user should be able to understand the rationale behind Bob, successfully navigate the code base and can easily contribute and improve the project.

Checklist:

  • Prepare an architecture diagram
  • Improve README to have more relevant info
  • Prepare a gh-pages branch and have a proper web page
  • Document code further

Make it work with JDK 13+

Currently due to the issue docker-java/docker-java#1245 in docker-java which is used by clj-docker-client which is the lib for Bob, its not possible to run Bob on JDK 13.

Release a new clj-docker-client when a fix is available and make Bob great again!

Implement Internal Resources

Implement Internal Resources as a way to signify the dependency of a pipeline to another.

Maybe implement this as an artifact fetch internally?

Also auto-trigger upstream pipeline(s)?

Improve health checks for Bob

Check all sub systems on GET /api/can-we-build-it

Checks:

  • Docker is reachable and anwsers positively on ping
  • H2 is operational

How to continuously deploy Bob itself?

Currently Bob executes the build on one of the many nodes in a build cluster. During a deployment this node will be taken down along with its potentially running build(s).

We need to come up with a way to continuously deploy new versions of Bob while not affecting the running builds.

Bob crash recovery

  • How would bob recover in case of one of the nodes going down during a build?
  • What happens to the dangling build still in running state?
  • If thats to be marked as failed, who should be doing that?
  • More questions?

Create the Plugin mechanism

Bob plugin requirements:

  • Should expose a REST API
  • Should have the following paths:
    • GET /bob_request: Params to be encoded as K-V pairs. Returns a
      resource (typically a zip file) with code 200 else 400.
    • GET /ping: Health check endpoint, should return 200 if fully functional.

Bob requirements

  • Should expose a /plugin/register/name endpoint where the plugin
    registers itself with a POST request where name is a
    unique name without spaces and a JSON body having the following:
    {
      "url": "fully-recheable-url-with-protocol"
    }
    Bob should return 200 if successfully registered else 409 in case of conflict.
  • Should expose a /plugin/unregister/name endpoint where the plugin
    registers itself with a POST request where name is a
    unique name without spaces. Bob should return 200 if successfully removed
    and this should be idempotent
  • Should expose a /plugins endpoint answering a GET request which
    lists all registered plugins

Cleanup after a build

Now that Bob core is stateless, the dangling images and containers can be safely removed to conserve (LOTS OF) space.

Implement 'password' authentication for Bob

Implement password-only authentication for Bob. As an execution engine, Bob should not care about user management. But to provide one layer of security Bob may be configured with a list of passwords that can be used to access Bob's apis.

Provision for multiple Artifact Stores

Currently Bob only supports a single Artifact Provider for simplicity reasons.

But in the case of federating Bobs, the need to multiple Artifact stores may arise as like in the case of the need to store artifacts in different places/regions/providers.

Health check for external systems

  • Add health checks for registered resource providers and artifact stores
  • Maybe do an automatic heartbeat at an interval to all subsystems and log for failure?

Externalize Artifacts

Artifacts should be able to specify a relative path in the context of a resource.

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.