ubuntu上gitlab的CI/CD流程如何配置
导读: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,复制 URL 与 Registration 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,定义 stages 与 jobs。示例(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
- stages:
- 要点说明:
- 使用 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_RSA、SERVER_USER、SERVER_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
