GitLab CI/CD:Runner架构与Auto DevOps实践
GitLab CI/CD:Runner架构与Auto DevOps实践
GitLab Runner架构
GitLab Runner是执行CI/CD作业的代理程序,支持Shell、Docker、Kubernetes等多种执行器。Runner可以部署在本地服务器、云实例或Kubernetes集群中。
GitLab Server → 注册Runner → 分配Job → 执行Pipeline → 上报结果
↓
┌─────────┴─────────┐
│ Runner执行器 │
│ Shell | Docker │
│ K8s | VirtualBox │
└───────────────────┘
Runner配置与注册
Runner安装与注册
# 安装Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo yum install gitlab-runner
# 注册Runner
sudo gitlab-runner register \
--url https://gitlab.example.com/ \
--registration-token $REGISTRATION_TOKEN \
--executor docker \
--docker-image alpine:latest \
--description "docker-runner" \
--tag-list "docker,linux" \
--run-untagged="true"
Runner配置文件
# /etc/gitlab-runner/config.toml
concurrent = 4
check_interval = 3
[runners](/notes/runners)
name = "Production Runner"
url = "https://gitlab.example.com/"
executor = "docker"
[runners.docker]
image = "alpine:latest"
privileged = true
disable_cache = false
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
[runners.cache]
Type = "s3"
Shared = true
Auto DevOps
Auto DevOps是GitLab内置的自动化CI/CD框架,自动检测项目类型并配置完整的流水线。
# .gitlab-ci.yml Auto DevOps配置
include:
- template: Auto-DevOps.gitlab-ci.yml
variables:
AUTO_DEVOPS_PLATFORM_DOMAIN: gitlab.example.com
KUBE_NAMESPACE: auto-devops-$CI_COMMIT_REF_SLUG
流水线优化策略
# 使用缓存加速构建
build:
stage: build
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .npm/
script:
- npm ci --prefer-offline
# 并行执行测试
test:unit:
stage: test
script: npm run test:unit
test:integration:
stage: test
script: npm run test:integration
Runner集群管理
大规模部署时,建议使用Runner集群配合负载均衡:
# Runner自动伸缩配置(Kubernetes执行器)
[runners](/notes/runners)
[runners.kubernetes]
namespace = "gitlab-ci"
cpu_limit = "2"
memory_limit = "4Gi"
service_cpu_limit = "0.5"
service_memory_limit = "1Gi"