aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-03-30 09:27:53 +0300
committerFrederick Muriuki Muriithi2022-03-30 09:27:53 +0300
commit48013cdc61fcba3658d8c1bdbe47a7ab5d1c8899 (patch)
treebe43f8fb558c52dae26fdeb642c202933be38d96
parente9786aaa8ddab758942bd9b16ff76783316b1764 (diff)
downloadgn-docs-48013cdc61fcba3658d8c1bdbe47a7ab5d1c8899.tar.gz
Start documenting the CI/CD system
* Do an overview * Take some notes on things to read further into
-rw-r--r--.gitignore2
-rw-r--r--deploy/continuous_integration_and_deployment_system.org26
2 files changed, 28 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a4664e1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+## Ignore emacs temporary/backup files
+/**/*~ \ No newline at end of file
diff --git a/deploy/continuous_integration_and_deployment_system.org b/deploy/continuous_integration_and_deployment_system.org
new file mode 100644
index 0000000..748bb3c
--- /dev/null
+++ b/deploy/continuous_integration_and_deployment_system.org
@@ -0,0 +1,26 @@
+#+STARTUP: contents inlineimages shrink
+#+OPTIONS: ^:{}
+#+TITLE: Continuous Integration and Deployment System
+
+* Overview
+
+The continuous integration (CI) and continuous deployment (CD) system is dependent on the following:
+
+- [[https://guix.gnu.org/][GNU Guix]]: used to define the machine (VM, container, etc) within which the CI/CD system will run
+- [[https://guix-forge.systemreboot.net/][Guix Forge]]: does the main ochestration that enables the CI/CD system to function
+- [[https://laminar.ohwg.net/][Laminar]]: Runs the CI jobs
+
+In the sections that follow, we shall dive deeper into how the CI/CD system is put together
+
+** CI/CD Flow
+- Developer writes some code and pushes it to the /main/ branch in the GeneNetwork(2/3) repositories
+- A webhook triggers the CI system
+- The CI system runs the unit tests, linting and type checks mostly concurrently
+- If *ALL* the unit tests pass, the application is redeployed
+
+* TODO Figure out how to organise these notes :genenetwork:CI:CD:
+- The system uses webhook to trigger the builds on each commit
+- Use of [[https://guix.gnu.org/manual/en/html_node/G_002dExpressions.html][Guix G-Expressions]]
+- There is some use of ~development-server-configuration~ objects
+
+* TODO Maybe do a deep dive into at least one of the service definitions, explaining what each "thing" is and how it works :genenetwork:CI:CD: