温馨提示×

GitLab Linux配置中的CI/CD流程

小樊
49
2025-10-25 00:33:26
栏目: 智能运维

GitLab Linux环境下的CI/CD流程配置指南

1. 安装GitLab Runner

GitLab Runner是执行CI/CD任务的守护进程,需先在Linux服务器上安装并配置。常见安装方式包括包管理器(如Ubuntu的apt、CentOS的yum)或Docker:

  • 包管理器安装(Ubuntu示例)
    sudo apt-get update
    sudo apt-get install gitlab-runner
    
  • Docker安装(推荐)
    docker run -d --name gitlab-runner --restart always \
      -v "/srv/gitlab-runner/config:/etc/gitlab-runner" \
      gitlab/gitlab-runner:latest
    

安装完成后,需将Runner注册到GitLab实例:

sudo gitlab-runner register

按提示输入GitLab实例URL(如https://gitlab.com)、注册Token(从GitLab项目→Settings→CI/CD→Runners获取),选择执行器类型(如shelldocker),并配置Runner标签(如linuxdeploy)。

2. 创建.gitlab-ci.yml配置文件

在项目根目录下创建.gitlab-ci.yml文件,定义CI/CD流程的阶段(stages)任务(jobs)。示例如下:

stages:
  - build    # 构建阶段
  - test     # 测试阶段
  - deploy   # 部署阶段

build_job:
  stage: build
  script:
    - echo "Building the project..."
    - ./build_script.sh  # 自定义构建脚本
  artifacts:
    paths:
      - build/           # 传递构建产物到后续job

test_job:
  stage: test
  script:
    - echo "Running tests..."
    - ./run_tests.sh     # 自定义测试脚本
  needs: ["build_job"]   # 依赖build_job完成

deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production..."
    - scp -r build/* user@remote_server:/var/www/html  # 部署到远程服务器
  only: ["master"]       # 仅master分支触发

关键说明

  • stages:定义流程的阶段顺序(需按从左到右执行);
  • script:每个job的具体执行命令;
  • artifacts:传递构建产物到后续job;
  • needs:定义job依赖关系;
  • only/except:控制分支触发条件。

3. 配置CI/CD变量

敏感信息(如SSH私钥、服务器地址、数据库密码)需通过GitLab的CI/CD变量管理,避免硬编码到.gitlab-ci.yml中:

  1. 进入项目→Settings→CI/CD→Variables;
  2. 点击“Add variable”,输入变量名(如SSH_PRIVATE_KEYDEPLOY_SERVER)和值;
  3. 勾选“Mask variable”(隐藏变量值)和“Protect variable”(仅受保护分支可用)。
    .gitlab-ci.yml中通过$变量名引用(如ssh -i $SSH_PRIVATE_KEY user@$DEPLOY_SERVER)。

4. 触发CI/CD流程

CI/CD流程的触发方式有两种:

  • 自动触发:当代码推送到GitLab仓库(如git push origin master)时,GitLab会自动检测.gitlab-ci.yml并启动流水线;
  • 手动触发:在GitLab项目→CI/CD→Pipelines页面,点击“Run pipeline”,选择分支和变量后手动启动。

5. 监控与调试

  • 查看流水线状态:进入项目→CI/CD→Pipelines,可查看所有流水线的执行状态(通过/失败/挂起);
  • 查看job日志:点击流水线中的具体job(如build_job),可查看详细的命令输出和错误信息;
  • 调试技巧:若job失败,可在job配置中添加allow_failure: false(默认),或在脚本中添加set -x(打印执行的每一行命令)。

6. 进阶配置

  • 缓存优化:通过cache指令缓存依赖项(如node_modulesmaven仓库),加速构建速度。示例如下:
    build_job:
      stage: build
      script:
        - npm install
        - npm run build
      cache:
        paths:
          - node_modules/  # 缓存node_modules目录
    
  • 多阶段并行:通过parallel指令并行运行多个任务(如同时运行单元测试和集成测试);
  • Docker集成:使用docker执行器构建和推送Docker镜像,或通过kubectl部署到Kubernetes集群。示例如下:
    deploy_job:
      stage: deploy
      image: alpine/helm:latest  # 使用Helm部署
      script:
        - helm upgrade --install my-app ./chart --namespace prod
      only: ["master"]
    

通过以上步骤,可在Linux环境下快速搭建GitLab CI/CD流程,实现代码的自动化构建、测试和部署。根据项目需求,可进一步扩展流程(如添加代码质量检查、通知机制),提升开发效率。

0