Ubuntu 上 GitLab 集成工具的实操指南
一 安装与准备
- 更新系统并安装依赖:sudo apt update && sudo apt install -y curl openssh-server ca-certificates postfix
- 添加 GitLab 官方仓库并安装 CE:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install -y gitlab-ce
- 配置外部访问地址并生效:
sudo vim /etc/gitlab/gitlab.rb → 设置 external_url ‘http://your_domain_or_ip’
sudo gitlab-ctl reconfigure && sudo gitlab-ctl start
- 访问 Web:打开浏览器进入 http://your_server_ip 完成初始化设置。
二 集成 GitLab Runner 与 CI/CD
- 安装 Runner(Ubuntu/Debian):
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install -y gitlab-runner
- 注册 Runner:
在项目的 Settings → CI/CD → Runners 获取 URL 与 Registration token,执行:sudo gitlab-runner register
按提示填写 GitLab 实例地址、注册令牌、Runner 描述、Tags(可选),选择执行器(建议 docker,也可 shell)。如使用 Docker,请确保已安装 Docker Engine。
- 启动服务:
sudo systemctl daemon-reload
sudo systemctl start gitlab-runner && sudo systemctl enable gitlab-runner
- 创建流水线:在项目根目录新增 .gitlab-ci.yml,定义 stages、jobs、script 等,提交后自动触发构建、测试、部署。
三 常见工具集成方式
- Webhooks:在项目 Settings → Webhooks 添加目标 URL 与触发事件(如 push、merge request),用于通知外部系统(如企业微信、钉钉、Jenkins)。
- API 集成:使用 GitLab REST API 进行用户、项目、流水线、Runner 等自动化管理(适合自建门户/运维平台对接)。
- 第三方应用与扩展:通过 GitLab Marketplace 安装与 JIRA、Slack 等工具的集成应用,实现需求/缺陷联动与消息通知。
- 容器与镜像:在 CI 中使用 Docker 构建与推送镜像,可对接 Harbor 等私有镜像仓库,实现安全分发与版本管理。
四 实战示例 Docker 构建与 SSH 部署
- 思路:在 Runner(建议自建)上构建镜像 → 推送到 GitLab 容器注册表 → 通过 SSH 登录目标服务器拉取并重启服务。
- 关键步骤:
- 在 GitLab 项目启用容器注册表,并在 CI 变量中配置:CI_REGISTRY、CI_REGISTRY_USER、CI_REGISTRY_PASSWORD、SSH_PRIVATE_KEY、DEPLOY_HOST。
- .gitlab-ci.yml 片段(示例):
stages:
- build
- deploy
variables:
IMAGE: $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHA
build:
stage: build
image: docker:20.10
services:
- docker:20.10-dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE .
- docker push $IMAGE
deploy_prod:
stage: deploy
image: alpine:latest
before_script:
- apk add --no-cache openssh
- mkdir -p ~/.ssh
- echo “$SSH_PRIVATE_KEY” | tr -d ‘\r’ > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- ssh-keyscan -H $DEPLOY_HOST >> ~/.ssh/known_hosts
script:
- ssh $DEPLOY_USER@$DEPLOY_HOST “docker pull $IMAGE && docker stop web || true && docker rm web || true && docker run -d --name web -p 80:80 $IMAGE”
only:
- main
- 安全建议:部署作业尽量使用自建 Runner;私钥等敏感信息放入 CI/CD 变量 并设为 Masked/Protected;必要时使用 SSH Deploy Keys 或 Kubernetes 等更安全的部署方式。