GitLab Admin Training
Getting Started with GitLab Admin
2
The One
DevOps Platform
for software innovation
Business
Developers
Security
Operations
One user interface
Unified data model
Plan
Create
Monitor
Package
Release
Manage
Verify
Secure
Configure
Protect
GitLab Recommended Process
Manage | Plan | Create | Verify | Package | Secure | Release | Configure | Monitor | Protect |
Create Merge Request
Automated�Build / Test
Collaboration & Review
Approval
Push Code
Push Fixes
Review App
Assign Issue
Scan
Release
Merge Accepted
Deploy
Epics
Milestones
Issues
GitLab Workflow Components
GitLab Component | Function | Also known as... |
Project | The core building block where work is organized, managed, tracked and delivered to help the team to collaborate and plan work in the form of issues. | Repository |
Group | A collection of projects and subgroups. They are like folders. | Project |
Issue | An issue is part of a project. It is the fundamental planning object where the team documents the use case in the description, discusses the approach, estimates the size/effort (issue weight), tracks actual time/effort, assigns work, and tracks progress. | Story, Narrative |
Epic | A collection of related issues across different groups and projects to help organize by theme | |
Merge Request | The linkage between the issue and the actual code changes. Captures the design, implementation details (code changes), discussions (code reviews), approvals, testing (CI Pipeline), and security scans. | Pull Request |
Label | Used to tag and track work for a project or group and associate issues with different initiatives | |
Board | A visual listing of projects and issues useful for teams to manage their backlog of work, prioritize items, and move issues to the team or specific stage in the project. | |
Milestone / Iteration | A sprint or deliverable(s), helping you organize code, issues, and merge requests into a cohesive group | Release / Sprint |
Roadmap | A visual representation of the various epics for the group | |
GitLab Hierarchy
Group
Sub Group
Project
Issue
Issue
Project
Project
Participants
Comments
Assignments
Issue
Issue
GitLab Installation
GitLab Installation (Ubuntu 24.04) (1/2)
Enable SSH and open firewall ports:
Add Gitlab package repository:
GitLab Installation (Ubuntu 24.04) (2/2)
Install the package:
Admin Tour & Instance Hardening
First checks
First step in making your installation secure:
Instance basics
External URL & HTTPS are defined in /etc/gitlab/gitlab.rb
(external_url ‘https://git.fotia.com.my’)
Configure GitLab
SMTP
Configure SMTP in Omnibus
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yourprovider.com"
gitlab_rails['smtp_port'] = 587 # use 465 for SMTPS
gitlab_rails['smtp_user_name'] = "smtp-user"
gitlab_rails['smtp_password'] = "smtp-password"
gitlab_rails['smtp_domain'] = "yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true # for 587/STARTTLS
# For 465/SMTPS also set:
# gitlab_rails['smtp_tls'] = true
# Sender identity
gitlab_rails['gitlab_email_from'] = 'gitlab@yourdomain.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@yourdomain.com'
Container Registry
Separate domain
Configure Registry to use its own domain
Change Time Zone
Default time zone in GitLab is UTC, but you can change it to your likin
Administer users
Roles & permissions
GitLab Roles
From least to most permissions
Roles explained
Minimal access | Guest users | Reporters | Developers | Maintainers | Owners |
Only on top-level group | Free on Ultimate | Read-only contributors | Full project access | Full project access | Owners are group/project admins |
Not counted against license | Limited read-only access | Can’t write to the repository | Can’t commit / merge to protected branch | Can push to master & deploy to production | Have destructive privileges on project/group |
Need to be given explicit access to projects | Can comment on issues & MR’s | Can comment on issues & MR’s | Can’t deploy yo protected environments | Own/maintains the codebase | Can give users access to groups / projects |
| Only applies on private & internal projects | | No admin privileges | Limited admin privileges on project / group | Can elevate users in paid role |
Create users
Every person who needs access to your GitLab projects requires an account. User accounts control access permissions, track contributions, and maintain security across your instance.
You can create user accounts in GitLab in different ways:
Create a user in the Admin
To create a user:
GitLab sends an email to the user with a sign-in link, and the user must create a password when they first sign in. You can also directly set a password for the user
Reset user passwords
To reset a user password in the UI:
GitLab updates the user password
Locked user accounts
Gitlab locks a user account after the user unsuccessfully attempts to sign in several times. By default, user accounts are locked after 10 failed sign-in attempts. Accounts are unlocked automatically after 10 minutes.
To unlock an account from the Admin area:
The user can now sign in.
External User
Commonly created when a user outside an organization needs access to only a specific project. When assigning a role to an external user, you should be aware of the project visibility and permissions associated with the role.
External User
Create an external user
Moderate users (1/3)
View users by type
Filter the list of users to display only human or bot users.
To view users by type:
Moderate users (2/3)
Users pending approval
When a user registers for an account while this setting is enabled:
A user pending approval:
An administrator must approve their sign up to allow them to sign in
Moderate users (3/3)
Approve or reject a user sign up
A user sign up pending approval can be approved or rejected from the Admin area.
To approve or reject a user sign up:
Approve a user:
Rejecting a user:
Review abuse reports (1/2)
Receive notification of abuse reports by email
To receive notifications of new abuse reports by email:
Review abuse reports (2/2)
Resolve abuse reports
To access abuse reports:
There are four ways to resolve an abuse report, with a button for each method:
Broadcast messages (1/2)
GitLab can display two types of broadcast messages to users of a GitLab instance:
1) Banners
Banners are shown on the top of a page:
2) Notifications
GitLab shows notifications on the bottom right of a page
Broadcast messages (2/2)
Add a broadcast message
To add a broadcast message:
Maintain GitLab
Backup and Restore
Back up GitLab
GitLab backups protect your data and help with disaster recovery
Restore GitLab for Linux
Ensure your backup tar file is in the backup directory
Automate Backup
0 2 * * * /usr/bin/gitlab-backup create CRON=1
15 2 * * * /opt/gitlab/bin/gitlab-ctl backup-etc && cp $(ls -t /etc/gitlab/config_backup | head -n1) /secret/gitlab/backups/
Restart GitLab
Restart a Linux package installation
Ensure your backup tar file is in the backup directory
Restart a component separately
Append service name to the `restart` command
Secure GitLab
Enforce two-factor authentication (2FA)
Enforce 2FA for all users
You can use UI to enforce 2FA for all users:
Enforce two-factor authentication (2FA)
Enforce 2FA for Admininstrator users
You can use UI to enforce 2FA for all users:
Q&A