💾 Archived View for thebird.nl › gn-gemtext-threads › topics › systems › ci-cd.gmi captured on 2023-01-29 at 03:34:29. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-04-28)

➡️ Next capture (2023-07-22)

🚧 View Differences

-=-=-=-=-=-=-

CI/ CD for genetwork projects

We need to figure out/ discuss and document how to go about doing the whole automated testing and deployment, from pushing code to deployment to production.

For a first, we need various levels of tests to be run, from unit tests to the more complicated ones like integration, performance, regression, etc tests, and of course, they cannot all be run for each and every commit, and will thus need to be staggered across the entire deployment cycle to help with quick iteration of the code.

Tags

Tasks

As part of the CI/CD effort, it is necessary that there is

automated testing.

Ideas

GeneNetwork is interested in doing two things on every commit (or

periodically, say, once an hour/day):

Arun has figured out the CI part. It runs a suitably configured laminar CI service in a Guix container created with `guix system container'. A cron job periodically triggers the laminar CI job.

https://git.systemreboot.net/guix-forge/about/

CD hasn't been figured out. Normally, Guix VMs and containers created by `guix system` can only access the store read-only. Since containers don't have write access to the store, you cannot `guix build' from within a container or deploy new containers from within a container. This is a problem for CD. How do you make Guix containers have write access to the store?

Another alternative for CI/ CID were to have the quick running tests, e.g unit tests, run on each commit to branch "main". Once those are successful, the CI/CD system we choose should automatically pick the latest commit that passed the quick running tests for for further testing and deployment, maybe once an hour or so. Once the next battery of tests is passed, the CI/CD system will create a build/artifact to be deployed to staging and have the next battery of tests runs against it. If that passes, then that artifact could be deployed to production, and details on the commit and

Possible Steps

Below are some possible steps (and tasks) to undertake for automated deployment

STEP 01: Build package

STEP 02: Deploy to Staging

STEP 03: Deploy to Release Candidate

STEP 03: Deploy to Production

Some Work Done

GN Services

This contains a check-list of things that need to be done:

Orchestration

Broken-cd (Resolved)