diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | deploy/continuous_integration_and_deployment_system.org | 26 |
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: |