GitLab教程(1): 什么是GitLab及其核心功能

GitLab是一个基于Git的完整DevOps平台,提供从代码托管到CI/CD的一站式解决方案。本文将介绍GitLab的核心概念和功能特点。

GitLab简介

GitLab是一个开源的DevOps平台,提供Git代码仓库管理、问题跟踪、CI/CD流水线、代码审查等功能。它可以自托管部署,也提供SaaS服务(gitlab.com)。

GitLab vs GitHub vs Gitee

# 功能对比

功能                GitLab          GitHub          Gitee
────────────────────────────────────────────────────────────
代码托管            ✓               ✓               ✓
内置CI/CD           ✓ (强大)        ✓ (Actions)     ✓ (基础)
自托管              ✓ (免费)        ✓ (收费)        ✓ (收费)
代码审查            ✓               ✓               ✓
问题跟踪            ✓               ✓               ✓
容器镜像仓库        ✓               ✓               ✓
Kubernetes集成      ✓               ✓               ✗
安全扫描            ✓               ✓               ✓
中国访问            一般            较慢            快

# GitLab特点
- 开源,可自托管
- 完整的DevOps工具链
- 强大的CI/CD功能
- 支持私有部署
- 企业级安全功能

GitLab版本

# GitLab有两个主要版本

1. GitLab CE (Community Edition)
   - 开源免费
   - 核心功能完整
   - 社区支持
   - 适合个人和小团队

2. GitLab EE (Enterprise Edition)
   - 商业版本
   - 高级功能(LDAP组同步、高可用等)
   - 官方支持
   - 适合大型企业

# 部署方式
- gitlab.com (SaaS)
- 自托管 (Self-managed)
- GitLab Dedicated (托管私有实例)

GitLab核心功能

1. 代码管理 (Source Code Management)

# Git仓库操作

# 克隆仓库
git clone https://gitlab.com/username/project.git
git clone git@gitlab.com:username/project.git

# 创建分支
git checkout -b feature/new-feature

# 推送代码
git push origin feature/new-feature

# 仓库功能
- 分支保护
- 合并请求 (Merge Request)
- 代码审查
- Web IDE在线编辑
- 文件锁定
- 代码搜索

2. CI/CD流水线

# .gitlab-ci.yml 示例

stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - npm install
    - npm run build
  artifacts:
    paths:
      - dist/

test:
  stage: test
  script:
    - npm run test

deploy:
  stage: deploy
  script:
    - ./deploy.sh
  only:
    - main

# CI/CD功能
- 自动化构建和测试
- 多阶段流水线
- 并行执行
- 环境管理
- 部署审批
- 回滚支持

3. 问题跟踪 (Issue Tracking)

# Issue功能

- 创建和管理任务
- 标签分类
- 里程碑
- 指派负责人
- 时间跟踪
- 关联合并请求
- 看板视图 (Board)

# Issue模板
# .gitlab/issue_templates/Bug.md
## 问题描述

## 复现步骤
1.
2.
3.

## 期望行为

## 实际行为

## 环境信息
- 操作系统:
- 浏览器:
- 版本:

4. 容器镜像仓库

# GitLab内置容器镜像仓库

# 登录镜像仓库
docker login registry.gitlab.com
Username: your-username
Password: your-access-token
Login Succeeded

# 构建并推送镜像
docker build -t registry.gitlab.com/username/project:latest .
docker push registry.gitlab.com/username/project:latest

# 拉取镜像
docker pull registry.gitlab.com/username/project:latest

5. 安全扫描

# GitLab提供多种安全扫描

# .gitlab-ci.yml 安全扫描配置
include:
  - template: Security/SAST.gitlab-ci.yml
  - template: Security/Dependency-Scanning.gitlab-ci.yml
  - template: Security/Container-Scanning.gitlab-ci.yml
  - template: Security/Secret-Detection.gitlab-ci.yml

# 扫描类型
- SAST: 静态应用安全测试
- DAST: 动态应用安全测试
- Dependency Scanning: 依赖漏洞扫描
- Container Scanning: 容器镜像扫描
- Secret Detection: 密钥泄露检测
- License Compliance: 许可证合规

GitLab界面导航

# 项目主页结构

项目名称/
├── 概览
│   ├── 详情 (README)
│   ├── 活动
│   └── 发布
├── 代码
│   ├── 文件
│   ├── 提交
│   ├── 分支
│   ├── 标签
│   ├── 贡献者
│   └── 图表
├── 问题 (Issues)
├── 合并请求 (Merge Requests)
├── CI/CD
│   ├── 流水线
│   ├── 作业
│   ├── 编辑器
│   └── 计划
├── 安全性
├── 部署
│   ├── 环境
│   └── 发布
├── 包与镜像
│   ├── 容器镜像库
│   └── 软件包库
├── 基础设施
├── 监控
├── 分析
└── 设置

GitLab工作流程

# GitLab推荐的工作流程 (GitLab Flow)

1. 创建Issue描述需求
   Issues > New issue

2. 从Issue创建分支
   Issue页面 > Create merge request and branch

3. 本地开发并提交
   git checkout feature-branch
   git add .
   git commit -m "feat: implement feature"
   git push origin feature-branch

4. 创建合并请求 (Merge Request)
   - 填写描述
   - 指定审查者
   - 关联Issue: Closes #123

5. 代码审查
   - 审查者评论代码
   - 开发者根据反馈修改
   - 审查者批准

6. CI/CD自动运行
   - 自动构建
   - 自动测试
   - 所有检查通过

7. 合并到主分支
   - 点击Merge
   - 自动关闭关联Issue
   - 触发部署流水线

快速开始

# 1. 注册账号
# 访问 https://gitlab.com/users/sign_up

# 2. 创建新项目
# 点击 New project > Create blank project
项目名称: my-first-project
可见性: Private / Public
初始化README: 勾选

# 3. 克隆到本地
git clone https://gitlab.com/username/my-first-project.git
cd my-first-project

# 4. 添加代码
echo "# My Project" > README.md
git add .
git commit -m "Initial commit"
git push origin main

# 5. 查看结果
# 返回GitLab页面刷新即可看到提交

总结

本文介绍了GitLab的核心概念和主要功能,包括代码管理、CI/CD、问题跟踪等。GitLab是一个功能完整的DevOps平台,适合从个人到企业的各种规模团队。

下一篇我们将学习如何在Linux系统上安装GitLab。

发表回复

后才能评论