watonomous.github.io

  1. Software Division
  2. Software Division Home
  3. Infrastructure Group

[ Software Division : Continuous Integration ]

Created by [ Rowan Dempster], last modified by [ Charles Zhang] on Feb 18, 2021

What is Continuous Integration?
Continuous Integration (CI) refers to the practice of automating integration of code changes into a single software project, then using tools to assert the new code's correctness before integration (source). GitLab has a built-in CI service, which allows automated building and testing of code.

How is CI useful for WATOnomous?
For WATO, CI can be used to automatically compile a build (e.g. catkin_make) and run tests when new code changes are pushed.

How does CI work?
CI jobs are executed by provisioned machines called runners, through the coordinator API of GitLab CI. A service called gitlab_runner runs on the runner, and waits on GitLab's API to send it a job. When code is pushed to a repository, GitLab chooses a runner to execute the job. The output of the job is displayed on GitLab's UI.

How are GitLab runners configured?
See https://docs.gitlab.com/ee/ci/runners/.

How can I enable CI for my repository?
Please get in touch with the Infrastructure team, and we will set up a meeting to gather requirements.

Docker In Docker CI:
**To build images, we use docker in docker https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-the-docker-executor-with-the-docker-image-docker-in-docker

**

**Kubernetes K3s Runners:
**All CI jobs run in docker containers, and are managed by Kubernetes Clusters. Conversation between Ben & Charles: https://discord.com/channels/478659303167885314/614894097504665601/793894805914255360
Setup Instructions from Ben: https://gist.github.com/ben-z/c7e4ccf4465b3dd15ed6e4bb4e532acb

Document generated by Confluence on Dec 10, 2021 04:01

Atlassian