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
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.
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
docker:dind
imageWhy hasn't this been done already? Duh! ๐
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.
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:
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!
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?
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)?
For example ~/.bob.conf
so that Bob can be configured from outside before startup.
Think about the state management as the nodes won't have the pipeline in
question executing with them.
Check all sub systems on GET /api/can-we-build-it
Checks:
ping
this is to help possible contributors
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.
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.
Create a PUT endpoint to modify an already existing bob pipeline.
Most of Bob should have a decent test suite covering most of the cases (duh!)
This makes it fully data driven and will ease out the comms to docker and Java 13+ build issues.
/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
keyNow that Bob core is stateless, the dangling images and containers can be safely removed to conserve (LOTS OF) space.
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.
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.
Learn some UI and/or ask someone for help in building a reference UI for Bob
Bob should be able to deliver code in a de-coupled way akin to fetching resource or uploading artifacts.
Specially for failure scenarios
Events like resource fetches and artifact pushes should be in the build logs for debugging both internal and external errors
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.
Parses
sort -t "\t" -k2 test > test-sorted
wrongly.
Should include
Artifacts should be able to specify a relative path in the context of a resource.
This would make it easier for (new) users to quickly spin up a cluster on providers like AWS.
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.
Lay the foundation for the fully distributed peer network for Bob. Cassandra for inspiration??
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.