GitLab

一句话概括

GitLab 是一个完整的、一体化的 DevOps 平台 。它将软件开发全生命周期所需的功能------从项目规划、源代码管理、CI/CD 到安全扫描、监控和部署------都集成在一个单一的应用中。它远不止是一个 Git 仓库管理器(虽然这是它的核心)。

核心定位:从 Git 托管到 DevOps 平台

传统上,一个软件开发团队可能需要以下工具链:Jira(项目管理)+ GitHub/GitLab CE(代码托管)+ Jenkins(CI/CD)+ SonarQube(代码质量)+ Nexus(制品仓库)+ 各种安全扫描工具 + 部署脚本
GitLab 的雄心是取代这一切 ,提供一个"开箱即用"的统一平台。

下图清晰地展示了 GitLab 如何作为 DevOps 生命周期的中心枢纽,集成所有关键环节:

核心功能模块详解

GitLab 将这些功能组织成清晰的阶段,对应 DevOps 工作流:

  1. 规划与项目管理

    • 议题:类似 GitHub Issues 或 Jira 工单,用于追踪任务、缺陷、需求。

    • 看板:可视化的敏捷开发面板,通过拖拽议题来管理进度。

    • 里程碑:为特定目标(如版本发布)分组议题。

    • Wiki:项目知识库。

  2. 源代码管理(SCM)

    • 这是 GitLab 的基石,提供强大的 Git 仓库托管,包括:

      • 分支管理:受保护的分支、合并请求(Merge Request,MR)。

      • 代码审查:MR 内的行级评论、讨论、审批规则。

      • Web IDE:可以直接在浏览器中编辑代码。

      • 价值流分析:可视化从提交到部署的周期时间。

  3. 构建、测试与部署(CI/CD)

    • 核心GitLab CI/CD,一个内置的、极其强大的持续集成和交付系统。

    • 配置即代码 :通过在项目根目录添加一个 .gitlab-ci.yml 文件来定义整个流水线。

    • 功能

      • 自动化构建与测试:代码提交后自动运行。

      • 多阶段流水线 :定义 buildtestdeploy 等阶段。

      • Runner:执行流水线任务的代理,可以部署在任何地方(Kubernetes, Docker, 虚拟机等)。

      • Auto DevOps:为项目提供预设的、全功能的 CI/CD 流水线,实现"零配置"自动化。

  4. 安全与合规

    • "安全左移":将安全检查嵌入开发早期阶段。

    • 多种扫描器:在 CI 流水线中自动运行。

      • SAST:静态应用安全测试(代码漏洞)。

      • DAST:动态应用安全测试(运行应用漏洞)。

      • 容器扫描:检查 Docker 镜像的漏洞。

      • 依赖扫描:检查项目依赖(如 npm, Maven)的漏洞。

      • 许可证合规:检查依赖的许可证是否符合公司政策。

    • 安全仪表盘:集中查看所有项目的安全漏洞。

  5. 软件包与容器镜像仓库

    • 内置制品仓库:类似于轻量级的 Nexus 或 Artifactory,可以直接托管:

      • Maven/NuGet/npm/PyPI/RubyGems

      • Docker 容器镜像

      • Helm Charts

    • 与 CI/CD 完美集成:CI 构建的包可以直接推送到这里的仓库,后续部署阶段再从同一仓库拉取。

  6. 部署与运维

    • 环境管理 :自动创建 stagingproduction 等环境。

    • 功能开关:直接在 GitLab 中管理功能标志。

    • Kubernetes 集成:轻松连接 K8s 集群,实现自动部署。

    • 监控:集成 Prometheus,查看应用性能指标。

    • 日志:集成 ELK Stack(需配置),集中查看日志。

    • 错误追踪:集成 Sentry(需配置)。

    • 基础设施即代码:管理 Terraform 状态文件,通过 MR 管理基础设施变更。

对于运维团队的核心价值

  1. 降低复杂性 :从维护"一堆工具 "变为维护"一个平台",大幅减少集成、认证、升级和维护的负担。

  2. 统一的权限与审计:所有操作(代码、流水线、部署)都在一个系统内,权限模型统一,审计日志完整,便于追踪和合规。

  3. 提升安全性:内置的安全扫描和合规工具使得"安全左移"成为流程的自然组成部分,而非事后补救。

  4. 加速交付:极紧密的 CI/CD 集成意味着代码提交到部署的路径最短,自动化程度最高。

  5. 更好的协作:开发、运维、安全团队在同一个平台上工作,使用共同的语言和界面,打破壁垒。

常见命令

复制代码
#关联GitLab服务器HIS-FONTEND项目与Programer主机HIS-FONTEND代码
[root@Programer HIS-BACKEND]# cd

[root@Programer ~]# cd HIS/HIS-FONTEND

#初始化仓库
[root@Programer HIS-FONTEND]# git init
已初始化空的 Git 仓库于 /root/HIS/HIS-FONTEND/.git/

#关联本地与远程
[root@Programer HIS-FONTEND]# git remote add origin \
http://192.168.88.20/devops/HIS-FONTEND.git

[root@Programer HIS-FONTEND]# git remote -v
origin  http://192.168.88.20/devops/HIS-FONTEND.git (fetch)
origin  http://192.168.88.20/devops/HIS-FONTEND.git (push)

[root@Programer HIS-FONTEND]# git add ./                        #添加文件到暂存区
[root@Programer HIS-FONTEND]# git commit -m "Init Fontend Code" #提交到本地版本库
[root@Programer HIS-FONTEND]# git tag v1                        #创建v1标签
[root@Programer HIS-FONTEND]# git push -u origin --all          #推送所有分支

[root@Programer HIS-FONTEND]# git push -u origin --tags         #推送所有标签 
总共 0(差异 0),复用 0(差异 0),包复用 0
To http://192.168.88.20/devops/HIS-FONTEND.git
 * [new tag]         v1 -> v1

主要竞品

  • GitHub :在代码托管和社区方面领先,通过 GitHub ActionsGitHub Advanced Security 等组件也构建了强大的 DevOps 平台,但部分高级功能集成度不如 GitLab 原生。

  • Bitbucket:Atlassian 家族产品,与 Jira、Confluence 深度集成,但在 CI/CD 等方面相对弱势。

  • Azure DevOps:微软的全套 DevOps 服务,功能强大,与 Azure 云服务深度绑定。

  • Jenkins:CI/CD 领域的"老国王",极其灵活、插件丰富,但需要大量配置和维护,不是一体化平台。

总结

GitLab 是一个雄心勃勃的"All-in-One"解决方案 。它始于一个优秀的 Git 托管服务,但已演变为一个旨在覆盖整个 DevOps 生命周期 的综合性平台。对于寻求简化工具链、强化安全与合规、并加速软件交付 的组织来说,GitLab 是一个非常强大和有吸引力的选择。它的核心理念是:在一个界面里完成所有工作,让软件交付像流水线一样顺畅、自动、可控。

相关推荐
明月心9521 天前
git remote add 用法
gitlab
only_Klein1 天前
jenkins流水线报错:Connection reset by peer
ci/cd·kubernetes·gitlab·jenkins·ssl
梁萌2 天前
docker部署gitlab和gitlab runner
docker·eureka·gitlab
johnnyAndCode2 天前
Idea 设置GitLab时使用账密,而不是token的配置方法
gitlab·idea
天外飞雨2 天前
Gitlab使用
gitlab
BUTCHER53 天前
GitLab SSH 密钥配置
运维·ssh·gitlab
明月心9523 天前
GitLab使用
gitlab
明月心9524 天前
gitlab pull requets
gitlab
BUTCHER54 天前
GitLab基本设置
gitlab
张小凡vip4 天前
Kubernetes---gitlab的ci/cd发布基于k8s的项目示例参考
ci/cd·kubernetes·gitlab