<style> .present { text-align: left } .present h2 { text-align: center } </style> # GitLab CI overview --- ## CI/CD services in IT * [GitLab CI](https://cern.service-now.com/service-portal/article.do?n=KB0003690) * [Jenkins self-service instances](https://cern.service-now.com/service-portal/service-element.do?name=CI-Jenkins) As part of [_Version Control Systems_](https://cern.service-now.com/service-portal/function.do?name=version-control), a set of services to developers also including [GitLab](https://cern.service-now.com/service-portal/service-element.do?name=git-service), [JIRA](https://cern.service-now.com/service-portal/service-element.do?name=JIRA-service), distribution ([Nexus](https://cern.service-now.com/service-portal/service-element.do?name=soft-comp-rep), [Docker registry](https://docs.docker.com/registry/introduction/))... --- ## GitLab CI/CD adoption ![](https://codimd.web.cern.ch/uploads/upload_3fb4dd3790795c81d4cddf3f3703991a.png) At least 2 orders of magnitude more GitLab CI jobs than Jenkins CI jobs --- ## GitLab CI/CD pipelines ![](https://codimd.web.cern.ch/uploads/upload_199beddb87cd720053027bf4667a34ce.png) --- ## GitLab CI shared runners * Docker containers * Dynamically provisioned Openstack VMs * Fully automated, scalable, job isolation * October 2019: ~40 VMs, ~150 cores, ~600 GB +300 user-provisioned "specific runners" (Windows, electronic designs, Kubernetes etc.) --- ## Shared runner usage ![](https://codimd.web.cern.ch/uploads/upload_3583e1c8ec9eea50c3942ccb33d8c578.png) --- ## GitLab CI design highlights * CI definition under version control (`.gitlab-ci.yml`) * Fork workflow: CI runs in the context of the fork * "Specific runners" attached to individual projects * Must be shared with each fork --- ## Advanced usage * GitLab CI for large projects: [doc](https://docs.gitlab.com/ee/ci/large_repositories/) * Custom "executor" in GitLab runners: [doc](https://docs.gitlab.com/runner/executors/custom.html) * IT involvement to automate sharing "specific runners" with all forks * e.g. class of `atlas` shared runners * Take inspiration from [CI for GitLab itself](https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml)?
{"tags":"Presentation, ATLAS Software and Computing Infrastructure Group"}