CI
CI is the component of Common in charge of providing the infrastructure of a Continuous Integration and Continuous Delivery system (CI/CD).
Public Oath
There are GitLab Runners attached to the Universe repository:
- They are able to run jobs, but for no longer than 30 minutes.
- They can access the internet.
- They are of x86_64-linux architecture.
- Their tag names (
small
andlarge
) do not change, and for a given tag name the associated RAM and Disk capacity is never decreased. - They start running the job within a few seconds (short queue time).
There is a DynamoDB table called
terraform_state_lock
.
Architecture
- Our CI/CD system is GitLab CI.
- Most of the infrastructure for this is implemented using Niek Palm's terraform-aws-gitlab-runner module.
- The machine instances created by the CI have two sizes (small and large), and auto-scale on demand throughout the day.
- The GitLab runner uses the GitLab OpenID provider in order to assume an IAM role on Amazon Web Services (AWS), like those provided by the Users component of Common.
- A DynamoDB table is provided in order to allow other Developers to lock the terraform state, such that it's only modified by one actor (Developer, CI job, etc) at the same time, helping prevent state corruption.
tip
You can right-click on the image below to open it in a new tab, or save it to your computer.
Contributing
Please read the contributing page first.