GitLab Cheatsheet
GitLab Cheatsheet

GitLab is a web-based DevOps platform that provides a robust set of tools for source code management, CI/CD, project management, and deployment automation. This cheatsheet covers everything from basic usage to advanced GitLab features.
1. Introduction to GitLab
What is GitLab?
GitLab is an open-source DevOps platform offering integrated tools for:
- Source control (Git)
- Continuous Integration/Continuous Deployment (CI/CD)
- Issue tracking and project management
- Container registry and DevSecOps
Key Features
- Git Repository Management: Handles distributed version control and code review.
- CI/CD Pipelines: Automates testing, integration, and deployment.
- DevSecOps: Built-in security scanning for dependencies, container images, and code.
- Container Registry: Docker container management.
2. Basic GitLab Setup
Signing Up and Creating a Project
- Sign up: Visit GitLab and create an account.
- Create a Project:
- Go to Projects → New Project.
- Choose Blank Project, Import, or Template.
- Configure visibility (Private, Internal, or Public).
 
Adding SSH Keys
- 
Generate an SSH key: ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 
Copy the public key: cat ~/.ssh/id_rsa.pub
- 
Add the key in GitLab: - Go to User Settings → SSH Keys → Paste the public key.
 
3. GitLab Basics
Cloning a Repository
git clone git@gitlab.com:username/projectname.git
Committing Changes
# Stage files git add . # Commit files git commit -m "Initial commit" # Push changes git push origin main
Branching
- 
Create a branch: git checkout -b feature-branch
- 
Push the branch: git push origin feature-branch
Merge Requests (MRs)
- Go to your project on GitLab.
- Navigate to Merge Requests → New Merge Request.
- Select source and target branches and create an MR.
4. Working with GitLab CI/CD
Basics of .gitlab-ci.yml
The .gitlab-ci.yml file defines the CI/CD pipeline.
Example File:
stages: - build - test - deploy build_job: stage: build script: - echo "Building the project" - ./build-script.sh test_job: stage: test script: - echo "Running tests" - ./test-script.sh deploy_job: stage: deploy script: - echo "Deploying to production" - ./deploy-script.sh
Pipeline Lifecycle
- Stages: Define steps (e.g., build,test,deploy).
- Jobs: Define tasks in each stage.
- Runners: Execute pipeline jobs (shared or custom).
Running a Pipeline
- 
Push changes to a branch: git push origin branch-name
- 
Check pipelines: - Navigate to CI/CD → Pipelines in GitLab.
 
5. Intermediate GitLab Features
GitLab Runners
- Runners execute CI/CD jobs.
- Shared Runners: Provided by GitLab.
- Custom Runners: Self-hosted.
Register a Custom Runner:
- 
Install GitLab Runner: sudo apt install gitlab-runner
- 
Register the Runner: gitlab-runner register- Enter GitLab URL, registration token, executor (e.g., shell,docker), and tags.
 
- Enter GitLab URL, registration token, executor (e.g., 
Managing Variables
- 
Set Environment Variables: - Go to Settings → CI/CD → Variables.
- Add variables (e.g., AWS_ACCESS_KEY,DOCKER_PASSWORD).
 
- 
Use in .gitlab-ci.yml:script: - echo $MY_VARIABLE
Artifacts
Artifacts store job outputs.
test_job: stage: test script: - ./run-tests artifacts: paths: - test-results/
6. Advanced GitLab Features
GitLab Pages
Host static websites directly on GitLab.
Example .gitlab-ci.yml for Pages:
pages: stage: deploy script: - mkdir .public - cp -r * .public artifacts: paths: - public
Container Registry
- 
GitLab provides a built-in Docker registry for container storage. 
- 
Push an Image: docker build -t registry.gitlab.com/username/projectname:tag . docker login registry.gitlab.com docker push registry.gitlab.com/username/projectname:tag
GitLab Kubernetes Integration
- Integrate Kubernetes clusters with GitLab for deployments.
- Navigate to Operations → Kubernetes to connect your cluster.
Deploy Using Helm:
deploy: stage: deploy script: - helm install my-app ./helm-chart
7. Security in GitLab
SAST (Static Application Security Testing)
- 
Enable SAST to scan for vulnerabilities: include: - template: Security/SAST.gitlab-ci.yml
DAST (Dynamic Application Security Testing)
- 
Perform runtime vulnerability scans: include: - template: Security/DAST.gitlab-ci.yml
Secret Detection
- 
Detect hardcoded secrets: include: - template: Security/Secret-Detection.gitlab-ci.yml
8. GitLab Monitoring and Analytics
Pipeline Analytics
- Navigate to Analytics → CI/CD → Pipelines to review pipeline efficiency.
Code Coverage
- 
Enable coverage reports in .gitlab-ci.yml:test_job: stage: test script: - ./run-tests coverage: '/Code Coverage: \d+%/'
Container Scanning
- 
Scan Docker images for vulnerabilities: include: - template: Security/Container-Scanning.gitlab-ci.yml
9. GitLab Backup and Recovery
Backing Up GitLab
- 
For self-hosted GitLab, run: gitlab-backup create
- 
Backup includes repositories, CI/CD logs, uploads, and settings. 
Restoring GitLab
- 
Restore a backup: gitlab-restore restore BACKUP_FILE=backup_filename
10. Troubleshooting GitLab
Common Errors
- Pipeline Failures:
- Check pipeline logs in CI/CD → Jobs.
 
- Runner Issues:
- Ensure the runner is active: gitlab-runner status.
 
- Ensure the runner is active: 
- Permission Errors:
- Verify SSH key and repository access.
 
Debugging CI/CD Pipelines
- 
Add verbose logging: script: - echo "Debugging info" - set -x - ./my-script.sh
11. GitLab Best Practices
- Use Branching Strategies:
- Implement GitLab Flow or GitFlow for streamlined collaboration.
 
- Secure CI/CD Pipelines:
- Use environment variables to manage sensitive data.
 
- Automate Reviews:
- Use merge request templates and code owners.
 
- Leverage GitLab Templates:
- Use pre-built .gitlab-ci.ymltemplates to save time.
 
- Use pre-built 
- Monitor Usage:
- Regularly check project and pipeline analytics.
 
12. Useful GitLab CLI Commands
Basic Commands
- 
Login to GitLab CLI: glab auth login
- 
List Repositories: glab repo list
- 
Create an Issue: glab issue create --title "Bug report" --description "Details here"
References and Resources
Follow me on : Medium Linkedin Researchgate