GitLab

Our primary development and project management platform.

Overview

GitLab is a comprehensive DevOps platform that combines version control, project management, CI/CD, and collaboration tools in one unified interface. It’s built around Git version control and provides everything needed for the complete software development lifecycle.

What is Git?

Git is a distributed version control system that tracks changes in files and coordinates work between multiple people.

  • Version Control: Track every change made to files over time—see what changed, when, and by whom.
  • Distributed: Everyone has a complete copy of the project history. Work offline and sync when ready.
  • Branching & Merging: Create separate “branches” to work on features, then merge them back when complete.
  • Collaboration: Multiple people can work on the same project without conflicts through systematic merging.

What is GitLab?

GitLab is a comprehensive DevOps platform that uses Git as its foundation.

  • Built on Git: Provides a web interface and additional tools for Git repositories.
  • All-in-One Platform: Code hosting, issue tracking, project management, CI/CD, and team collaboration in one place.
  • Self-Hosted or Cloud: Can run on your own servers or use GitLab.com’s hosted service.
  • Integrated Workflows: Issues, merge requests, and deployments work together seamlessly.

GitLab Structure

🏗️ Groups

  • Collections of related projects (e.g. a team, department, or organization).
  • Can be nested (Groups within Groups).
  • Used to organize projects and manage permissions at scale.

📁 Projects (Repositories)

  • Individual codebases, documentation sets, or work areas.
  • Contains files, issues, merge requests, and project settings.
  • Can be public, internal, or private.

🎯 Issues

  • Track bugs, feature requests, tasks, and discussions.
  • Can be assigned, labeled, and organized into milestones.
  • Support templates and custom workflows.

🔀 Merge Requests (MRs)

  • Propose changes to the codebase.
  • Enable code review, discussion, and approval workflows.
  • Automatically run tests and checks before merging.

🏷️ Labels & Milestones

  • Labels: categorize issues and MRs (e.g. bug, enhancement, priority).
  • Milestones: group work toward specific goals or release dates.

🔑 Roles

  • Owner: Full control over the group/project.
  • Maintainer: Can manage settings, merge requests, and repository.
  • Developer: Can push code, create issues and merge requests.
  • Reporter: Can create issues and comment.
  • Guest: Read-only access to public resources.

User Setup Instructions

Please complete the following steps before our next call. It should take around 30 minutes.

1. Create Your Account

  • Create GitLab Account: Sign up for GitLab
  • Choose a username like tgyatso (replace with your name)
  • Complete your profile with your real name and professional email

Professional usernames help with team recognition and project attribution.

2. Set Up SSH Keys for Secure Access

SSH keys provide secure, password-free authentication to GitLab repositories.

Generate an SSH key pair:

ssh-keygen -t ed25519 -C "your-email@example.com"

Purpose: Creates a public/private key pair for authentication. The -t ed25519 uses modern, secure encryption.

Display and copy your public key:

cat ~/.ssh/id_ed25519.pub

Purpose: Shows your public key content that needs to be shared with GitLab. The public key is safe to share.

Add the key to GitLab:

  1. Go to GitLab → Profile → Preferences → SSH Keys
  2. Click “Add new key”
  3. Paste your public key
  4. Give it a descriptive title
  5. Click “Add key”

Purpose: This registers your public key with GitLab, allowing secure authentication without passwords.

Test your connection:

ssh -T git@gitlab.com

Purpose: Verifies that your SSH key is properly configured and GitLab recognizes it.

When prompted about authenticity, type yes and press Enter. You should see “Welcome to GitLab, @username!”

Purpose: This security measure ensures you’re connecting to the real GitLab server.

3. Configure Git Locally

Enable private email in GitLab:

  1. Go to GitLab → User Settings → Profile
  2. In the “Commit email” section, select “Use a private email” from the dropdown
  3. Your private email address will be automatically generated (format: 12345678-username@users.noreply.gitlab.com)

Configure Git with your private email:

git config --global user.name "Your Full Name"
git config --global user.email "12345678-username@users.noreply.gitlab.com"

Verify your configuration:

git config --global user.name
git config --global user.email

Purpose: Git needs to know who you are to properly attribute commits. This information appears in the project history and helps teammates identify who made which changes. Using GitLab’s private email protects your personal email address while still allowing proper commit attribution.

4. Join Relevant Groups/Projects

After account creation, the engineering lead will add you to the appropriate groups and projects for your role.

Note: After completing setup, please share your GitLab username on Element so we can add you to the relevant projects.

General GitLab Guidelines

For detailed guidelines on issues, commits, merge requests, and code review processes, see our Contributing Guide.

Review Thoughtfully: Provide constructive feedback on code reviews and respond to comments promptly.

Keep Projects Organized: Use labels, milestones, and project boards to maintain clarity.

Document Your Work: Update README files, add code comments, and maintain project documentation.

Respect Permissions: Only push to branches you have access to and follow the project’s contribution workflow.

Ask Questions: Use issue comments, merge request discussions, or team channels when you need clarification.