GitLab在Linux上的持续集成如何操作
导读: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,复制 URL 与 Registration token。
- 在 Runner 服务器注册:
- 执行:sudo gitlab-runner register
- 依次输入:GitLab 实例 URL、项目 token、Runner 描述、标签(如:linux, docker)、执行器(常见为 shell、docker、docker: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
- paths:
- 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:
- 要点:
- 通过 stages 定义执行顺序;用 artifacts 在阶段间传递文件(如上例的 target/*.jar)。
- 使用 image 指定作业运行环境;需要 Docker 时选择 docker 或 docker:dind。
- 用 only/except 或 rules 控制分支触发;生产部署建议限制在 main/master。
四 触发、监控与变量安全
- 触发与查看:
- 将 .gitlab-ci.yml 提交并推送到仓库(如:git push origin main),GitLab 会自动创建 Pipeline。
- 在项目的 CI/CD → Pipelines 查看作业状态、日志与耗时,失败可在日志中定位问题。
- 变量与密钥:
- 在 Settings → CI/CD → Variables 添加敏感信息(如 SSH_PRIVATE_KEY、DOCKER_USERNAME、DOCKER_PASSWORD),勾选 Masked 与(必要时)Protected,避免明文出现在日志中。
- 在作业中使用如 $SSH_PRIVATE_KEY、$DOCKER_PASSWORD 等变量进行登录、部署等操作。
五 常见问题与最佳实践
- Runner 无法连接或作业一直 pending:
- 检查 Runner 是否 在线,标签是否匹配作业;必要时在项目设置中 启用/取消保护 Runner。
- 权限与 SSH:
- 使用 SSH 部署 时,将私钥以 SSH_PRIVATE_KEY 变量注入;目标服务器将公钥加入 authorized_keys,并确保目录与文件权限正确(如 ~/.ssh 700、authorized_keys 600)。
- Docker in Docker(DinD)网络与性能:
- 若使用 docker:dind,建议设置 DOCKER_HOST=tcp://docker:2375 并使用同一网络;资源受限时可改用 docker 执行器挂载宿主机 Docker 套接字(安全性需评估)。
- 缓存与镜像加速:
- 合理使用 cache 加速依赖安装(如 node_modules、maven .m2);为国内环境配置 镜像源 提升稳定性与速度。
- 生产部署策略:
- 通过 only/main、rules 或 environment 控制部署;必要时增加 手动确认 阶段(when: manual)降低风险。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: GitLab在Linux上的持续集成如何操作
本文地址: https://pptw.com/jishu/755754.html
