Section 6: GitLab CI/CD Fundamentals
- The structure of .gitlab-ci.yml: stages, jobs, script, image and variables
- Branch pipelines, merge request pipelines and tag pipelines
- Controlling execution with rules and workflow
- Lab: the first PulseDesk pipeline, triggered on push and on merge requests
Section 7: Lab: GitLab Runner
- Runner architecture and instance, group and project runners
- Creating a runner in the UI and registering it with a runner authentication token
- Shell, Docker and Kubernetes executors compared, and choosing between them with tags
- Lab: register a Docker executor runner on your own laptop
Section 8: Fast, Maintainable Pipelines
- Caches for Python and Node.js dependencies, and artifacts for passing results between jobs
- needs for running jobs as a DAG instead of waiting for whole stages
- Reducing duplication with extends, include and CI/CD components
- Lab: measure pipeline time before and after adding caches and needs
Section 9: Lab: Testing and Quality in the Pipeline
- Running pytest and Vitest and reporting test results on the merge request
- Showing coverage on the merge request
- Lint and format checks for both Python and JavaScript
- Lab: block merge requests whose tests fail
Section 10: Lab: Building, Scanning and Pushing Container Images
- Building images in the pipeline with Docker-in-Docker or Buildah, and the security caveats
- Pushing to the GitLab Container Registry with predefined variables
- Tagging by commit SHA and version
- Scanning with Trivy and failing the pipeline on high-severity vulnerabilities
- Workshop: a PulseDesk pipeline that lints, tests, builds, scans and pushes both images