From 48013cdc61fcba3658d8c1bdbe47a7ab5d1c8899 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Wed, 30 Mar 2022 09:27:53 +0300 Subject: Start documenting the CI/CD system * Do an overview * Take some notes on things to read further into --- .gitignore | 2 ++ ...ontinuous_integration_and_deployment_system.org | 26 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 .gitignore create mode 100644 deploy/continuous_integration_and_deployment_system.org 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: -- cgit v1.2.3