简介:本文详细解析私有化部署GitLab与GitLab Runner实现CI/CD的全流程,涵盖架构设计、安装配置、安全加固及优化实践,为企业提供可落地的自动化构建与部署方案。
在公有云CI/CD服务(如GitHub Actions、GitLab SaaS)普及的今天,企业选择私有化部署的核心动机在于数据主权、安全合规与资源可控。具体表现为:
| 组件 | 职责 | 部署建议 |
|---|---|---|
| GitLab Server | 代码托管、CI/CD配置管理 | 独立服务器或容器化部署 |
| GitLab Runner | 执行CI/CD任务(编译、测试、部署) | 按项目/团队分布式部署 |
| 对象存储 | 存储构建产物、日志 | MinIO或企业级存储(如Ceph) |
| 监控系统 | 收集Runner性能指标 | Prometheus + Grafana |
concurrent参数控制并发任务,避免单节点过载;
# Ubuntu 20.04示例curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bashsudo apt-get install gitlab-eesudo gitlab-ctl reconfigure
关键配置:
/etc/gitlab/gitlab.rb中设置external_url为内网域名;
# gitlab-deployment.yaml示例apiVersion: apps/v1kind: Deploymentmetadata:name: gitlabspec:template:spec:containers:- name: gitlabimage: gitlab/gitlab-ee:latestenv:- name: GITLAB_OMNIBUS_CONFIGvalue: |external_url 'https://gitlab.example.com';postgresql['enable'] = false; # 使用外部PostgreSQLredis['enable'] = false; # 使用外部Redis
# 在GitLab Server获取注册Token(Settings > CI/CD > Runners)sudo gitlab-runner register \--url https://gitlab.example.com \--registration-token REGISTRATION_TOKEN \--executor shell \ # 或docker、kubernetes--description "Linux-Runner" \--tag "linux,docker" \--run-untagged
| 执行器类型 | 适用场景 | 注意事项 |
|---|---|---|
| Shell | 简单脚本执行 | 依赖主机环境,隔离性差 |
| Docker | 跨平台构建,环境隔离 | 需预配置Docker镜像 |
| Kubernetes | 弹性伸缩,支持复杂部署 | 需K8s集群权限 |
cache关键字缓存依赖(如npm、Maven仓库);parallel指令加速测试阶段。
stages:- build- test- deploycache:key: "$CI_COMMIT_REF_SLUG"paths:- node_modules/- target/build-job:stage: buildscript:- mvn clean packageartifacts:paths:- target/*.jartest-job:stage: testscript:- mvn testparallel:matrix:- TEST_SUITE: [unit, integration]deploy-job:stage: deployscript:- kubectl apply -f k8s/deployment.yamlonly:- main
--cpu和--memory参数分配资源;docker:dind服务避免重复拉取镜像;output_limit防止日志过大。/etc/gitlab/gitlab.rb配置gitlab_rails['gitlab_default_can_create_group'] = false禁用自动创建组;gitlab_rails['logging_format'] = 'json'便于日志分析。external_url;tls-skip-verify=true。gitlab-runner verify检查Runner状态;timeout: 1h)。私有化部署GitLab与Runner为企业提供了高度可控的CI/CD环境,但需权衡初期投入与长期维护成本。未来趋势包括:
通过本文的架构设计、配置详解与优化实践,企业可快速构建符合自身需求的CI/CD体系,实现代码到部署的全流程自动化。