温馨提示×

ubuntu gitlab怎样集成工具

小樊
44
2025-12-10 21:10:06
栏目: 智能运维

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 获取 URLRegistration 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 登录目标服务器拉取并重启服务。
  • 关键步骤:
    1. 在 GitLab 项目启用容器注册表,并在 CI 变量中配置:CI_REGISTRY、CI_REGISTRY_USER、CI_REGISTRY_PASSWORD、SSH_PRIVATE_KEY、DEPLOY_HOST。
    2. .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 KeysKubernetes 等更安全的部署方式。

0