首页主机资讯GitLab在Linux上的持续集成如何操作

GitLab在Linux上的持续集成如何操作

时间2025-11-25 17:40:03发布访客分类主机资讯浏览1269
导读:Linux上搭建 GitLab CI 的标准流程 一 准备与安装 GitLab Runner 在要执行作业的 Linux 服务器 安装 Runner(与 GitLab 服务器可以是不同机器)。 以 Ubuntu/Debian 为例:...

Linux上搭建 GitLab CI 的标准流程


一 准备与安装 GitLab Runner

  • 在要执行作业的 Linux 服务器 安装 Runner(与 GitLab 服务器可以是不同机器)。
  • Ubuntu/Debian 为例:
    • 添加仓库并安装:
      • curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
      • sudo apt-get update & & sudo apt-get install -y gitlab-runner
    • CentOS/RHEL 为例:
      • curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
      • sudo yum install -y gitlab-ci-multi-runner
  • 如需使用 Docker 执行器,提前安装 Docker 并启动服务。以上步骤完成后,Runner 即具备执行 CI 作业的能力。

二 注册 Runner 并选择合适的执行器

  • 获取注册信息:进入项目的 Settings → CI/CD → Runners,复制 URLRegistration token
  • 在 Runner 服务器注册:
    • 执行:sudo gitlab-runner register
    • 依次输入:GitLab 实例 URL、项目 token、Runner 描述、标签(如:linux, docker)、执行器(常见为 shelldockerdocker:dind)。
  • 常用执行器与适用场景:
    • shell:直接在宿主机执行,适合简单任务或已有环境。
    • docker:在指定镜像中运行作业,环境一致、隔离性好。
    • docker:dind(DinD):在 CI 内运行独立 Docker 守护进程,适合需要构建/推送镜像的流水线。
  • 注册完成后,在项目的 Runners 页面可看到 在线 的 Runner,并可用标签约束作业运行位置。

三 编写 .gitlab-ci.yml 定义流水线

  • 在项目根目录创建 .gitlab-ci.yml,示例(多阶段与产物传递):
    • stages:
      • build
      • test
      • deploy
    • variables:
      • GIT_SUBMODULE_STRATEGY: recursive
    • build_job:
      • stage: build
      • image: maven:3.8-openjdk-11
      • script:
        • mvn clean package -DskipTests
      • artifacts:
        • paths:
          • target/*.jar
    • test_job:
      • stage: test
      • image: maven:3.8-openjdk-11
      • script:
        • mvn test
    • deploy_job:
      • stage: deploy
      • image: alpine
      • before_script:
        • apk add --no-cache openssh-client rsync
      • script:
        • rsync -avz target/*.jar user@your_server:/opt/app/
        • ssh user@your_server “systemctl restart myapp || true”
      • only:
        • main
  • 要点:
    • 通过 stages 定义执行顺序;用 artifacts 在阶段间传递文件(如上例的 target/*.jar)。
    • 使用 image 指定作业运行环境;需要 Docker 时选择 dockerdocker:dind
    • only/exceptrules 控制分支触发;生产部署建议限制在 main/master

四 触发、监控与变量安全

  • 触发与查看:
    • .gitlab-ci.yml 提交并推送到仓库(如:git push origin main),GitLab 会自动创建 Pipeline
    • 在项目的 CI/CD → Pipelines 查看作业状态、日志与耗时,失败可在日志中定位问题。
  • 变量与密钥:
    • Settings → CI/CD → Variables 添加敏感信息(如 SSH_PRIVATE_KEYDOCKER_USERNAMEDOCKER_PASSWORD),勾选 Masked 与(必要时)Protected,避免明文出现在日志中。
    • 在作业中使用如 $SSH_PRIVATE_KEY、$DOCKER_PASSWORD 等变量进行登录、部署等操作。

五 常见问题与最佳实践

  • Runner 无法连接或作业一直 pending:
    • 检查 Runner 是否 在线,标签是否匹配作业;必要时在项目设置中 启用/取消保护 Runner。
  • 权限与 SSH:
    • 使用 SSH 部署 时,将私钥以 SSH_PRIVATE_KEY 变量注入;目标服务器将公钥加入 authorized_keys,并确保目录与文件权限正确(如 ~/.ssh 700authorized_keys 600)。
  • Docker in Docker(DinD)网络与性能:
    • 若使用 docker:dind,建议设置 DOCKER_HOST=tcp://docker:2375 并使用同一网络;资源受限时可改用 docker 执行器挂载宿主机 Docker 套接字(安全性需评估)。
  • 缓存与镜像加速:
    • 合理使用 cache 加速依赖安装(如 node_modules、maven .m2);为国内环境配置 镜像源 提升稳定性与速度。
  • 生产部署策略:
    • 通过 only/mainrulesenvironment 控制部署;必要时增加 手动确认 阶段(when: manual)降低风险。

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


若转载请注明出处: GitLab在Linux上的持续集成如何操作
本文地址: https://pptw.com/jishu/755754.html
Linux环境下GitLab的插件如何安装与管理 Linux上GitLab的权限管理如何实现

游客 回复需填写必要信息