summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-08-11 23:01:25 +0300
committerLars Wirzenius <liw@liw.fi>2017-08-11 23:01:25 +0300
commit1f3899631a79f49f7d9f0beff0a3e53c7f22503e (patch)
tree5232b63d89cb85ebcd17529a0f43f3315323f581 /arch
parent3382666695c281612c3613c0856e42a6cbb6ce5a (diff)
downloadick2-1f3899631a79f49f7d9f0beff0a3e53c7f22503e.tar.gz
Add: more introductionary texxt
Diffstat (limited to 'arch')
-rw-r--r--arch/ick2-arch.mdwn42
1 files changed, 42 insertions, 0 deletions
diff --git a/arch/ick2-arch.mdwn b/arch/ick2-arch.mdwn
index 1cb21e8..6a69051 100644
--- a/arch/ick2-arch.mdwn
+++ b/arch/ick2-arch.mdwn
@@ -18,6 +18,48 @@ This document describes the architecture of Ick2.
Overview
-----------------------------------------------------------------------------
+A continuous integration (CI) or continuous deployment (CD) system is,
+at its most simple core, an automated system that reacts to changes in
+a program's source code by doing a build of the program, running any
+of its automated tests, and then publishing the results somewhere. A
+CD system continues from there to also installing the new version of
+the program on all relevant computers. If a build or an automated test
+fails, the system notifies the relevant parties.
+
+Ick2 aims to be a CI/CD system. It deals with a small number of
+concepts:
+
+* **projects**, which consist of **source code** in a version control
+ system (mainly git right now)
+* **pipelines**, which are sequences of steps aiming to convert source
+ code into something executable, or test the program
+* **worker build hosts**, which do all the heavy lifting
+
+Example
+-----------------------------------------------------------------------------
+
+We will be returning to this example throughout this document. Imagine
+a static website that is built using the ikiwiki software. The source
+of the web pages is stored in a git repo, and the generated HTML pages
+are published on a web server.
+
+This might be expressed as Ick2 configuration like this:
+
+ projects:
+ website:
+ workspace:
+ - git: ssh://git@git.example.com/website.git
+ pipelines:
+ build_workspace:
+ - shell: git clone ssh://git@git.example.com/website.git
+ build_site:
+ - shell: ikiwiki
+ FIXME: this should be finished
+
+
+Ick2 components
+-----------------------------------------------------------------------------
+
Ick2 consists of several independent services. This document describes
how they are used individually and together.