首页主机资讯ubuntu上gitlab的CI/CD流程如何配置

ubuntu上gitlab的CI/CD流程如何配置

时间2025-11-27 11:54:04发布访客分类主机资讯浏览615
导读:Ubuntu 上 GitLab CI/CD 流程配置 一 准备与安装 在 Ubuntu 上安装 GitLab Runner(以 Ubuntu 16.04+ 为例): 更新并安装依赖: sudo apt-get update sudo...

Ubuntu 上 GitLab CI/CD 流程配置

一 准备与安装

  • 在 Ubuntu 上安装 GitLab Runner(以 Ubuntu 16.04+ 为例):
    • 更新并安装依赖:
      • sudo apt-get update
      • sudo apt-get install -y curl openssh-server ca-certificates postfix
    • 添加 GitLab Runner 官方仓库并安装:
      • curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
      • sudo apt-get install -y gitlab-runner
  • 安装完成后,Runner 会以服务方式运行,后续通过命令注册到你的 GitLab 实例。

二 注册 Runner

  • 在 GitLab 项目中获取注册信息:进入 Settings > CI/CD > Runners,复制 URLRegistration token
  • 在 Ubuntu 上注册 Runner:
    • 执行:sudo gitlab-runner register
    • 按提示依次输入:
      • GitLab 实例 URL
      • Registration token
      • Runner 描述(自定义)
      • Tags(可选,用于限定作业运行在哪台 Runner)
      • Executor(建议优先选择 docker,如选 Docker 请确保宿主机已安装 Docker Engine)
  • 注册完成后,在项目 Runners 页面可看到状态为 online 的 Runner。

三 编写 .gitlab-ci.yml

  • 在项目根目录创建 .gitlab-ci.yml,定义 stagesjobs。示例(Node.js + Docker 构建与部署):
    • stages:
      • build
      • test
      • deploy
    • variables:
      • DOCKER_DRIVER: overlay2
      • IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    • before_script:
      • docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    • build_job:
      • stage: build
      • script:
        • docker build -t $IMAGE_TAG .
        • docker push $IMAGE_TAG
      • only:
        • merge_requests
        • main
    • test_job:
      • stage: test
      • script:
        • docker run --rm $IMAGE_TAG npm test – --ci
      • only:
        • merge_requests
        • main
    • deploy_job:
      • stage: deploy
      • script:
        • ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP “docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY”
        • ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP “docker pull $IMAGE_TAG”
        • ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP “docker rm -f myapp || true”
        • ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP “docker run -d --name myapp -p 80:80 $IMAGE_TAG”
      • environment: production
      • only:
        • main
  • 要点说明:
    • 使用 Docker 执行器时,构建与测试在容器内完成,部署通过 SSH 在目标服务器执行,避免把应用部署到 Runner 容器内。
    • 通过 only 控制分支触发;部署作业标记 environment: production,便于在 GitLab 中追踪部署记录。

四 配置变量与安全

  • 在 GitLab 项目 Settings > CI/CD > Variables 添加变量(建议至少配置以下三项):
    • ID_RSA:部署用 SSH 私钥(类型:文件 或 Variable;勾选 Masked
    • SERVER_USER:目标服务器登录用户(如 deploy
    • SERVER_IP:目标服务器 IP/域名
  • 安全建议:
    • 勾选 Masked 隐藏变量值,必要时勾选 Protected 限制到受保护分支/标签
    • 严禁在 .gitlab-ci.yml 中硬编码密钥;使用 SSH 的 StrictHostKeyChecking=no 仅用于自动化场景,生产环境建议提前将主机指纹加入 known_hosts。

五 触发与排错

  • .gitlab-ci.yml 提交并推送到仓库后,GitLab 会自动检测并触发流水线;在 CI/CD > Pipelines 查看状态与日志。
  • 常用排错路径:
    • Runner 未触发:检查项目 Runners 页面 Runner 是否为 online,以及 tags 是否匹配作业
    • 权限/登录失败:核对 ID_RSASERVER_USERSERVER_IP 是否正确;确认目标服务器已安装 Docker 且当前用户可免密 sudo 执行 docker 命令
    • 镜像拉取/推送失败:确认 CI_REGISTRY_USER/PASSWORD 与目标 Registry 权限配置正确
    • SSH 连接失败:确认私钥与服务器公钥匹配,或改用更安全的 known_hosts 方案。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu上gitlab的CI/CD流程如何配置
本文地址: https://pptw.com/jishu/757736.html
ubuntu上gitlab的监控与日志分析怎么做 gitlab在ubuntu上的集成开发环境如何搭建

游客 回复需填写必要信息