Skip to content

Commit 6299c05

Browse files
committed
Deployed 1a20ebc with MkDocs version: 1.6.1
1 parent 806e66f commit 6299c05

File tree

10 files changed

+38
-38
lines changed

10 files changed

+38
-38
lines changed

api/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@
183183
</div>
184184
<div class="md-content" data-md-component="content">
185185
<article class="md-content__inner md-typeset">
186-
<h1 id="api-reference">API Reference</h1>
187-
<p><iframe class="redoc-iframe" frameborder="0" id="8ff70db1" src="redoc-8ff70db1.html" style="overflow:hidden;width:100%;height:80vh;" width="100%"></iframe></p>
186+
<h1 id="api-reference">API Reference<a class="headerlink" href="#api-reference" title="Permanent link"></a></h1>
187+
<p><iframe class="redoc-iframe" frameborder="0" id="08efe797" src="redoc-08efe797.html" style="overflow:hidden;width:100%;height:80vh;" width="100%"></iframe></p>
188188
</article>
189189
</div>
190190
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>

architechture/index.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,28 +282,28 @@
282282
</div>
283283
<div class="md-content" data-md-component="content">
284284
<article class="md-content__inner md-typeset">
285-
<h1 id="bobs-architecture">Bob's Architecture</h1>
285+
<h1 id="bobs-architecture">Bob's Architecture<a class="headerlink" href="#bobs-architecture" title="Permanent link"></a></h1>
286286
<p><a class="glightbox" data-desc-position="bottom" data-height="auto" data-type="image" data-width="auto" href="../img/bob-arch.png"><img alt="Architecture" src="../img/bob-arch.png"/></a></p>
287-
<h2 id="bob-core">Bob Core</h2>
287+
<h2 id="bob-core">Bob Core<a class="headerlink" href="#bob-core" title="Permanent link"></a></h2>
288288
<p>Bob follows the UNIX <a href="https://en.wikipedia.org/wiki/Unix_philosophy">Philosophy</a>
289289
of being small, robust and do one thing and do it well. Unlike most of the popular
290290
CI tooling, Bob tries to be a collection of small components which does
291291
one thing really well and allows you to <em>compose them in the way you want</em>
292292
and build your CI platform.</p>
293293
<p>The core of the project lives in this <a href="https://github.com/bob-cd/bob">repository</a>. Its entirely written in <a href="https://clojure.org/">Clojure</a>, which allows Bob to be really small, scale easily and handle concurrency well. It uses <a href="https://xtdb.com/">XTDB</a> as its temporal, document database.</p>
294294
<p>All of the internals is exposed via a standard REST API.</p>
295-
<h2 id="pipeline">Pipeline</h2>
295+
<h2 id="pipeline">Pipeline<a class="headerlink" href="#pipeline" title="Permanent link"></a></h2>
296296
<p>A <a href="../pipelines/">Pipeline</a> is the one and only build unit for Bob. Bob is simple and therefore avoids the need of complex hierarchies (e.g. Jobs). A pipeline is completely self contained and can be linked to other pipelines either in up/downstream.</p>
297-
<h2 id="extending-bob-and-plugins">Extending Bob and Plugins</h2>
297+
<h2 id="extending-bob-and-plugins">Extending Bob and Plugins<a class="headerlink" href="#extending-bob-and-plugins" title="Permanent link"></a></h2>
298298
<p>Extending should be external, i.e. one should be able to <em>change Bob’s behavior by calling/using it differently</em> without having to dig too deep into the core.</p>
299299
<p>Extension of a CI/CD system is generally needed in the case of making the system interact with the world differently. Examples would be cloning a different kind of source control, reading a file from network, reacting to events etc. For this Bob defines a <a href="../resources/">Resource</a>, its way of abstracting out the need to know <em>how</em> to fetch something.</p>
300300
<p>The other need for extension is to store/deploy the results of a build somewhere. For this Bob defines an <a href="../artifacts/">Artifact</a>, its way of abstracting out the need to know <em>how</em> to publish its build results.</p>
301-
<h3 id="problems-with-extending-other-ci-tooling">Problems with Extending other CI tooling</h3>
301+
<h3 id="problems-with-extending-other-ci-tooling">Problems with Extending other CI tooling<a class="headerlink" href="#problems-with-extending-other-ci-tooling" title="Permanent link"></a></h3>
302302
<p>Bob strongly <em>rejects</em> the idea of traditional plugins wherein the plugin is generally written in the same technologies as the core and is loaded into the <em>same process</em> as the core. Well known examples for this can be seen in <a href="https://wiki.jenkins.io/display/JENKINS/Plugin+tutorial">Jenkins</a>, <a href="https://docs.gocd.org/current/extension_points/">GoCD</a>, <a href="https://plugins.jetbrains.com/docs/teamcity/">TeamCity</a> and others. This style of extending the core functionality presents the following issues:
303303
- The plugin author(s) must know the technologies used to develop the core.
304304
- The core has now one more possible attack surface where an issue in the plugin can cause nasty things to happen in the core ranging from it being unstable to security <a href="https://www.cvedetails.com/vulnerability-list/vendor_id-15865/product_id-34004/Jenkins-Jenkins.html">issues</a>.
305305
- Deploying these plugins often means a restart of the system, downtimes, misconfiguration and more importantly this needs happen on the same machine as the core and opens up a possibility of creating <a href="https://martinfowler.com/bliki/SnowflakeServer.html">snowflake</a> servers.</p>
306-
<h2 id="the-execution-model">The Execution Model</h2>
306+
<h2 id="the-execution-model">The Execution Model<a class="headerlink" href="#the-execution-model" title="Permanent link"></a></h2>
307307
<p>Like its depicted in the diagram above, Bob uses <a href="https://podman.io/">Podman</a> internally as its execution engine. This provides an easily provisioned, isolated and disposable environment for build to take place in. The runners in Bob runners are guaranteed to be <strong>rootless</strong> hence are safe to be run in a cloud native environment. Each runner can execute multiple pipeline runs concurrently fully isolated from each other.</p>
308308
<p>A pipeline is executed in the following way:</p>
309309
<ul>

artifacts/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@
218218
</div>
219219
<div class="md-content" data-md-component="content">
220220
<article class="md-content__inner md-typeset">
221-
<h1 id="artifacts">Artifacts</h1>
221+
<h1 id="artifacts">Artifacts<a class="headerlink" href="#artifacts" title="Permanent link"></a></h1>
222222
<p>An Artifact is the outcome of a pipeline which is to be stored away or consumed in another pipeline.</p>
223223
<p>In Bob, an artifact can be produced at any Step in a pipeline. In Bob, like Concourse CI, its important
224224
that artifacts <strong>should not</strong> be stored within the system as Artifacts should be there regardless of
@@ -235,7 +235,7 @@ <h1 id="artifacts">Artifacts</h1>
235235
</span></code></pre></div>
236236
<p>When Bob encounters such a step, it executes the step and if its successful, uploads the artifact
237237
from the provided <code>path</code> to an Artifact Store denoted by the <code>store</code> key.</p>
238-
<h2 id="artifact-store">Artifact Store</h2>
238+
<h2 id="artifact-store">Artifact Store<a class="headerlink" href="#artifact-store" title="Permanent link"></a></h2>
239239
<p>An Artifact Store is Bob's way of abstracting the kind of storage needed to store artifacts. This
240240
is akin to an abstract object store where Bob can store and retrieve artifacts.</p>
241241
<p>An artifact store is any system which has the following properties:</p>

cli/index.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,19 +290,19 @@
290290
</div>
291291
<div class="md-content" data-md-component="content">
292292
<article class="md-content__inner md-typeset">
293-
<h1 id="cli">CLI</h1>
293+
<h1 id="cli">CLI<a class="headerlink" href="#cli" title="Permanent link"></a></h1>
294294
<p>Bob and its ecosystem strongly follows a philosophy of being <a href="https://www.atlassian.com/blog/technology/spec-first-api-development">spec-first</a> from the server side to all the clients.</p>
295-
<h2 id="wendy">Wendy</h2>
295+
<h2 id="wendy">Wendy<a class="headerlink" href="#wendy" title="Permanent link"></a></h2>
296296
<p><a href="https://github.com/bob-cd/wendy">Wendy</a> is an opinionated, reference CLI/TUI for Bob and she strives to have the following purposes:</p>
297297
<ul>
298298
<li>Use a spec-first approach to implement a CLI for all of Bob's REST API</li>
299299
<li>Implement a declarative interface to Bob's resources and be a platform for it</li>
300300
<li>Implement a "command centre" for Bob: think <a href="https://k9scli.io/">k9s</a> or <a href="https://www.elastic.co/kibana">Kibana</a></li>
301301
<li>Possibly more</li>
302302
</ul>
303-
<h3 id="using-wendy">Using Wendy</h3>
303+
<h3 id="using-wendy">Using Wendy<a class="headerlink" href="#using-wendy" title="Permanent link"></a></h3>
304304
<p>Wendy is built using the <a href="https://go.dev/">Go</a> programming language and uses <a href="https://github.com/lispyclouds/climate">climate</a> at its core for its functionality.</p>
305-
<h4 id="installation">Installation</h4>
305+
<h4 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link"></a></h4>
306306
<ul>
307307
<li>As of now its to be built from source:<ul>
308308
<li>Clone the repo:
@@ -316,7 +316,7 @@ <h4 id="installation">Installation</h4>
316316
</ul>
317317
</li>
318318
</ul>
319-
<h4 id="usage">Usage</h4>
319+
<h4 id="usage">Usage<a class="headerlink" href="#usage" title="Permanent link"></a></h4>
320320
<p>The following are the configuration options and the defaults:</p>
321321
<ul>
322322
<li><code>endpoint</code>: The endpoint to connect to bob. Defaults to <code>"http://localhost:7777"</code></li>
@@ -327,7 +327,7 @@ <h4 id="usage">Usage</h4>
327327
<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a href="#__codelineno-2-1" id="__codelineno-2-1" name="__codelineno-2-1"></a>wendy<span class="w"> </span>bootstrap
328328
</span></code></pre></div>
329329
After this the full set of commands will be available and the cluster can be interacted with.</p>
330-
<h4 id="types-of-commands">Types of commands</h4>
330+
<h4 id="types-of-commands">Types of commands<a class="headerlink" href="#types-of-commands" title="Permanent link"></a></h4>
331331
<p>The commands that are bootstrapped from Bob are mostly imperative, eg:</p>
332332
<ul>
333333
<li><code>wendy pipelines delete --group foo --name bar</code></li>

getting-started/index.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -296,13 +296,13 @@
296296
</div>
297297
<div class="md-content" data-md-component="content">
298298
<article class="md-content__inner md-typeset">
299-
<h1 id="getting-started">Getting Started</h1>
299+
<h1 id="getting-started">Getting Started<a class="headerlink" href="#getting-started" title="Permanent link"></a></h1>
300300
<p>This document is meant to help you to run Bob locally on some popular platforms</p>
301-
<h2 id="running-bob-on-other-platforms">Running Bob on other platforms</h2>
301+
<h2 id="running-bob-on-other-platforms">Running Bob on other platforms<a class="headerlink" href="#running-bob-on-other-platforms" title="Permanent link"></a></h2>
302302
<p>Checkout the <a href="https://github.com/bob-cd/bob-deploy">bob-deploy</a> repo for reference deployments on various platforms</p>
303-
<h2 id="running-a-local-bob-cluster">Running a local Bob cluster</h2>
303+
<h2 id="running-a-local-bob-cluster">Running a local Bob cluster<a class="headerlink" href="#running-a-local-bob-cluster" title="Permanent link"></a></h2>
304304
<p>To get a minimal setup running locally (with a simple Github public repo and file system based storage), we will run <a href="https://github.com/bob-cd/bob">bob</a>, <a href="https://github.com/bob-cd/resource-git">resource-git</a> and <a href="https://github.com/bob-cd/artifact-local">artifact-store</a>.</p>
305-
<h3 id="on-kubernetes">On Kubernetes</h3>
305+
<h3 id="on-kubernetes">On Kubernetes<a class="headerlink" href="#on-kubernetes" title="Permanent link"></a></h3>
306306
<ol>
307307
<li>Use a remote cluster or setup a local one using <a href="https://kind.sigs.k8s.io/">kind</a> or <a href="https://minikube.sigs.k8s.io/docs/">Minikube</a> etc</li>
308308
<li>Apply the <a href="https://github.com/bob-cd/bob-deploy/tree/main/k8s">manifests</a>: <code>kubectl apply -f k8s/</code></li>
@@ -312,7 +312,7 @@ <h3 id="on-kubernetes">On Kubernetes</h3>
312312
</ul>
313313
</li>
314314
</ol>
315-
<h3 id="on-podman-or-docker">On Podman or Docker</h3>
315+
<h3 id="on-podman-or-docker">On Podman or Docker<a class="headerlink" href="#on-podman-or-docker" title="Permanent link"></a></h3>
316316
<ol>
317317
<li>Download <a href="https://podman.io/getting-started/installation">Podman</a> or <a href="https://docs.docker.com/engine/security/rootless/">Rootless Docker</a></li>
318318
<li>Fetch this <a href="https://github.com/bob-cd/bob-deploy/blob/main/docker-compose.yml">docker-compose.yml</a> file with <code>curl -LfO 'https://raw.githubusercontent.com/bob-cd/bob-deploy/main/docker-compose.yml'</code></li>
@@ -324,11 +324,11 @@ <h3 id="on-podman-or-docker">On Podman or Docker</h3>
324324
</span></code></pre></div></li>
325325
<li>When it all comes up, bob should be available on port <code>7777</code></li>
326326
</ol>
327-
<h3 id="using-the-api">Using the API</h3>
327+
<h3 id="using-the-api">Using the API<a class="headerlink" href="#using-the-api" title="Permanent link"></a></h3>
328328
<p>Bob exposes itself fully via a REST API as described <a href="https://bob-cd.github.io/pages/api-reference.html">here</a>
329329
HTTP clients like <a href="https://curl.haxx.se/">curl</a>, <a href="https://httpie.org/">HTTPie</a>, <a href="https://insomnia.rest/">Insomnia</a> etc could be used to directly interact with the <a href="../api/">API</a>.</p>
330330
<p>We would be using <a href="https://github.com/bob-cd/wendy">Wendy</a>, the reference CLI.</p>
331-
<h3 id="building-a-simple-project-on-bob">Building a simple project on Bob</h3>
331+
<h3 id="building-a-simple-project-on-bob">Building a simple project on Bob<a class="headerlink" href="#building-a-simple-project-on-bob" title="Permanent link"></a></h3>
332332
<p>This assumes the above steps have been followed and a Bob cluster is available on <code>http://localhost:7777</code> and Wendy is set up.</p>
333333
<ul>
334334
<li>Test if Bob is ready:

index.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,23 +245,23 @@
245245
</div>
246246
<div class="md-content" data-md-component="content">
247247
<article class="md-content__inner md-typeset">
248-
<h1 id="bob-the-builder">Bob the Builder</h1>
248+
<h1 id="bob-the-builder">Bob the Builder<a class="headerlink" href="#bob-the-builder" title="Permanent link"></a></h1>
249249
<blockquote>
250250
<p>Everything should be made as simple as possible, but no simpler - Albert Einstein</p>
251251
</blockquote>
252252
<p>Most CI/CD tools are too opinionated and do too much. Bob follows the UNIX philosophy of doing one thing and doing it well, and the Emacs/LISP like philosophy of small core with external extensibility, and strives for <a href="https://www.youtube.com/watch?v=MCZ3YgeEUPg">simpler, decomposed and hence more composable and unbundled design</a>. Built on secure, <b>rootless</b> runtimes, Bob is flexible to run in modern Cloud Native environments. For more information, see the <a href="rationale/">Rationale</a></p>
253-
<h2 id="overview">Overview</h2>
253+
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link"></a></h2>
254254
<p><a href="https://www.youtube.com/watch?v=KtMJ4lHI_qM"><img alt="ClojureD Talk" src="https://img.youtube.com/vi/KtMJ4lHI_qM/0.jpg"/></a></p>
255255
<p>Bob's API (accessible entirely through HTTP) enables a core set of CI/CD features.</p>
256256
<ul>
257257
<li><strong>You are in control</strong>: Bob is un-opinionated about how you build your pipelines, giving you complete control and freedom to experiment and innovate.</li>
258258
<li><strong>Bob is minimal</strong>: Bob is made up for three main composable components, Pipelines, Resources &amp; Artifacts. You have the freedom to build on top of these basic blocks to create complex pipelines designed for solving your problems.</li>
259259
</ul>
260-
<h2 id="join-the-conversation">Join the conversation</h2>
260+
<h2 id="join-the-conversation">Join the conversation<a class="headerlink" href="#join-the-conversation" title="Permanent link"></a></h2>
261261
<p>Please start a <a href="https://github.com/bob-cd/bob/discussions">discussion</a> on any topic and we are happy to help and learn from each other!</p>
262262
<p>For a more Clojure specific discussion there we also have a Clojurians Slack <a href="https://clojurians.slack.com/messages/CPBAYJJF6">channel</a>.</p>
263263
<p>Happy Building!</p>
264-
<h2 id="license">License</h2>
264+
<h2 id="license">License<a class="headerlink" href="#license" title="Permanent link"></a></h2>
265265
<p>Bob is <a href="https://www.gnu.org/philosophy/free-sw.en.html">Free</a> and Open Source and always will be. Licensed fully under <a href="https://opensource.org/licenses/MIT">MIT</a></p>
266266
</article>
267267
</div>

pipelines/index.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -274,10 +274,10 @@
274274
</div>
275275
<div class="md-content" data-md-component="content">
276276
<article class="md-content__inner md-typeset">
277-
<h1 id="pipelines">Pipelines</h1>
277+
<h1 id="pipelines">Pipelines<a class="headerlink" href="#pipelines" title="Permanent link"></a></h1>
278278
<p>A Pipeline is the only unit of execution in Bob.</p>
279279
<p>A pipeline consists of the following:</p>
280-
<h2 id="image">Image</h2>
280+
<h2 id="image">Image<a class="headerlink" href="#image" title="Permanent link"></a></h2>
281281
<p>Bob implements a pipeline as a series of steps carried out on a starting container image.
282282
This image is used to set the context of the build and is used to get the prerequisites like
283283
compilers, build tooling, deployment tooling etc.</p>
@@ -287,7 +287,7 @@ <h2 id="image">Image</h2>
287287
<li>For docker hub: <code>docker.io/library/ubuntu:latest</code></li>
288288
<li>For quay: <code>quay.io/podman/stable</code></li>
289289
</ul>
290-
<h2 id="vars">Vars</h2>
290+
<h2 id="vars">Vars<a class="headerlink" href="#vars" title="Permanent link"></a></h2>
291291
<p>Vars is a map of key-value pairs which denotes the environment variables that is to be available
292292
to all the steps of the pipeline.</p>
293293
<p>Example:
@@ -296,7 +296,7 @@ <h2 id="vars">Vars</h2>
296296
</span><span id="__span-0-3"><a href="#__codelineno-0-3" id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="w"> </span><span class="nt">"env"</span><span class="p">:</span><span class="w"> </span><span class="s2">"prod"</span>
297297
</span><span id="__span-0-4"><a href="#__codelineno-0-4" id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="p">}</span>
298298
</span></code></pre></div></p>
299-
<h2 id="a-list-of-steps">A List of Steps</h2>
299+
<h2 id="a-list-of-steps">A List of Steps<a class="headerlink" href="#a-list-of-steps" title="Permanent link"></a></h2>
300300
<p>A Step is essentially a key-value pair consisting of the following keys:</p>
301301
<ul>
302302
<li><code>cmd</code>: String, Required: This is the command that is to be executed.
@@ -340,10 +340,10 @@ <h2 id="a-list-of-steps">A List of Steps</h2>
340340
</span><span id="__span-2-6"><a href="#__codelineno-2-6" id="__codelineno-2-6" name="__codelineno-2-6"></a><span class="w"> </span><span class="p">}</span>
341341
</span><span id="__span-2-7"><a href="#__codelineno-2-7" id="__codelineno-2-7" name="__codelineno-2-7"></a><span class="p">}</span>
342342
</span></code></pre></div></p>
343-
<h2 id="list-of-resources">List of Resources</h2>
343+
<h2 id="list-of-resources">List of Resources<a class="headerlink" href="#list-of-resources" title="Permanent link"></a></h2>
344344
<p>Resources is a list of key-value pairs which defines the list of <a href="../resources/">Resources</a> which may be
345345
consumed by one or more of the steps of the pipeline.</p>
346-
<h2 id="full-working-pipeline-example">Full working pipeline example</h2>
346+
<h2 id="full-working-pipeline-example">Full working pipeline example<a class="headerlink" href="#full-working-pipeline-example" title="Permanent link"></a></h2>
347347
<div class="language-json highlight"><pre><span></span><code><span id="__span-3-1"><a href="#__codelineno-3-1" id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="p">{</span>
348348
</span><span id="__span-3-2"><a href="#__codelineno-3-2" id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="w"> </span><span class="nt">"image"</span><span class="p">:</span><span class="w"> </span><span class="s2">"docker.io/library/busybox:musl"</span><span class="p">,</span>
349349
</span><span id="__span-3-3"><a href="#__codelineno-3-3" id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="w"> </span><span class="nt">"vars"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>

0 commit comments

Comments
 (0)