ubuntu

gitlab在ubuntu上如何实现CI/CD

小樊
37
2025-11-02 21:48:03
栏目: 智能运维

GitLab在Ubuntu上实现CI/CD的完整步骤

1. 准备工作:安装GitLab(若未部署)

若尚未在Ubuntu上部署GitLab,需先完成安装。以下是Docker方式(推荐,便于管理)的安装步骤:

2. 安装并注册GitLab Runner

GitLab Runner是执行CI/CD任务的代理,需在Ubuntu上安装并注册到GitLab项目。

3. 创建.gitlab-ci.yml文件

在项目根目录下创建.gitlab-ci.yml文件,定义CI/CD流程(核心配置)。以下是一个通用示例(包含构建、测试、部署三个阶段):

stages:
  - build    # 构建阶段:编译代码、生成可执行文件
  - test     # 测试阶段:运行单元测试、集成测试
  - deploy   # 部署阶段:将应用部署到目标环境

variables:
  DOCKER_IMAGE: "your-dockerhub-username/your-app:${CI_COMMIT_SHA}"  # Docker镜像名称(含提交SHA)

build_job:
  stage: build
  image: docker:latest  # 使用Docker镜像
  services:
    - docker:dind       # 启用Docker-in-Docker(用于构建镜像)
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_TLS_CERTDIR: ""  # 禁用TLS验证(仅测试环境使用,生产环境需开启)
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY  # 登录GitLab容器注册表
    - docker build -t $DOCKER_IMAGE .  # 构建Docker镜像
    - docker push $DOCKER_IMAGE        # 推送镜像到GitLab注册表

test_job:
  stage: test
  image: node:18  # 根据项目语言选择镜像(如python:3.9、java:11等)
  script:
    - npm install  # 安装依赖(示例为Node.js项目)
    - npm test     # 运行测试

deploy_job:
  stage: deploy
  image: alpine:latest  # 使用轻量级镜像
  script:
    - apk add --no-cache ssh  # 安装SSH客户端(用于远程部署)
    - echo "$SSH_PRIVATE_KEY" > /tmp/id_rsa  # 读取私钥(需提前配置CI/CD变量)
    - chmod 600 /tmp/id_rsa
    - ssh -i /tmp/id_rsa -o StrictHostKeyChecking=no user@remote-server "cd /var/www/app && docker-compose pull && docker-compose up -d"  # SSH到服务器,拉取最新镜像并重启服务
  only:
    - master  # 仅master分支触发部署(可根据需求调整,如tags)

说明

4. 配置CI/CD变量(敏感信息管理)

.gitlab-ci.yml中使用了敏感信息(如SSH私钥、Docker Hub密码、API密钥),需通过GitLab的CI/CD变量管理:

  1. 进入项目页面,点击Settings → CI/CD → Variables
  2. 点击Add variable,输入:
    • Key:变量名(如SSH_PRIVATE_KEYDOCKER_REGISTRY_PASSWORD)。
    • Value:变量值(如SSH私钥内容、Docker Hub密码)。
    • Type:选择File(如SSH私钥)或Variable(如密码)。
  3. 勾选Mask variable(隐藏变量值,避免日志泄露),点击Add variable

5. 触发CI/CD流程

6. 查看与调试流水线

7. 高级配置(可选)

通过以上步骤,即可在Ubuntu上实现GitLab的CI/CD流程,实现代码的自动化构建、测试和部署。根据项目需求,可进一步定制.gitlab-ci.yml文件(如添加代码质量检查、Docker镜像扫描等任务)。

0
看了该问题的人还看了