bob-cd / bob Goto Github PK
View Code? Open in Web Editor NEWThis is what CI/CD should've been.
Home Page: https://bob-cd.github.io
License: MIT License
This is what CI/CD should've been.
Home Page: https://bob-cd.github.io
License: MIT License
Learn some UI and/or ask someone for help in building a reference UI for Bob
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:
docker:dind
imageCurrently 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.
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
Bob should be able to deliver code in a de-coupled way akin to fetching resource or uploading artifacts.
Parses
sort -t "\t" -k2 test > test-sorted
wrongly.
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)?
/bob_request
: Params to be encoded as K-V pairs. Returns a/ping
: Health check endpoint, should return 200 if fully functional./plugin/register/name
endpoint where the pluginname
is aunique name without spaces
and a JSON body having the following:
{
"url": "fully-recheable-url-with-protocol"
}
/plugin/unregister/name
endpoint where the pluginname
is aunique name without spaces
. Bob should return 200 if successfully removed/plugins
endpoint answering a GET request whichneeds_resource
keyCreate a PUT endpoint to modify an already existing bob pipeline.
Why hasn't this been done already? Duh! ๐
This addresses the issue of managing distributed state in a multi-node setup. Examples are the pausing/stopping pipelines in #26 and #59. This would allow Bobs to synchronize and notify one another for shared states and still keep the DB as the single source of shared state.
See https://gist.github.com/mikeball/ba04dd5479f51c00205f as an example to define a async handler for a trigger that notifies when a DB value changes.
Similar to #26, when a stop pipeline request is received in a multi node setup, its possible that the node is actually running the relevant container may not be the one that received the request.
For example ~/.bob.conf
so that Bob can be configured from outside before startup.
Since all of the core functionality of Bob is made as functions which are called on REST endpoints, they can be easily imported if Bob is to be used as an embedded engine in other Clojure programs.
This would make it easier for (new) users to quickly spin up a cluster on providers like AWS.
Should include
Hammock for moving to a record per log format, easier to timestamp and stream logs.
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.
Since Postgres is the only source of state, Bobs can replicate. Figure out a way to create a cluster to load balance Bobs. Maybe needs a service discovery mechanism?
Artifacts should be able to specify a relative path in the context of a resource.
Think about the state management as the nodes won't have the pipeline in
question executing with them.
Reitit offers data driven design, has much better performance and has better debugging experience. Check if Manifold works with it without Seppari? Alternatively use Yada, which should mostly work.
Events like resource fetches and artifact pushes should be in the build logs for debugging both internal and external errors
Lay the foundation for the fully distributed peer network for Bob. Cassandra for inspiration??
Check all sub systems on GET /api/can-we-build-it
Checks:
ping
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.
Specially for failure scenarios
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!
Most of Bob should have a decent test suite covering most of the cases (duh!)
Now that Bob core is stateless, the dangling images and containers can be safely removed to conserve (LOTS OF) space.
This makes it fully data driven and will ease out the comms to docker and Java 13+ build issues.
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.
this is to help possible contributors
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.