温馨提示×

如何利用GitLab在Linux上进行持续集成

小樊
50
2025-10-08 01:49:34
栏目: 智能运维

1. 安装GitLab Runner(CI/CD任务执行器)
GitLab Runner是执行CI/CD任务的必要组件,需先在Linux服务器上安装并注册。以Ubuntu/Debian为例,步骤如下:

  • 添加GitLab Runner包源:curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
  • 安装Runner:sudo apt-get install gitlab-runner
  • 注册Runner:运行sudo gitlab-runner register,按提示输入GitLab实例URL(如http://gitlab.example.com)和注册Token(从GitLab项目→Settings→CI/CD→Runners获取),选择执行器(推荐ShellDocker),并配置标签(如linux)以便后续筛选。

2. 配置.gitlab-ci.yml(CI/CD流程定义文件)
在项目根目录创建.gitlab-ci.yml文件,定义阶段(stages)(如buildtestdeploy)和任务(jobs)(每个job对应一个具体操作)。示例如下:

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

variables:
  GIT_SUBMODULE_STRATEGY: recursive  # 递归拉取子模块(如有)

build_job:
  stage: build
  image: maven:3.6.3-jdk-8           # 使用Maven镜像(适合Java项目)
  script:
    - echo "开始构建打包..."
    - mvn clean package              # 执行Maven构建
  artifacts:
    paths:
      - target/                      # 将构建产物(如jar包)传递给后续job

test_job:
  stage: test
  script:
    - echo "开始执行单元测试..."
    - mvn test                       # 运行Maven测试

deploy_job:
  stage: deploy
  script:
    - echo "开始部署到生产环境..."
    - scp -r target/*.jar user@your_server_ip:/opt/app/  # 将构建产物复制到服务器
  only:
    - master                         # 仅master分支变更时触发部署

该文件需提交到GitLab仓库,Runner会根据其内容自动执行流程。

3. 触发CI/CD Pipeline
Pipeline触发方式有两种:

  • 自动触发:当代码推送到GitLab仓库(如git push origin master)时,Runner会自动检测.gitlab-ci.yml并启动Pipeline。
  • 手动触发:在GitLab项目→CI/CD→Pipelines页面,点击“Run pipeline”手动启动(适合测试或特殊场景)。

4. 监控与调试Pipeline

  • 查看执行状态:进入GitLab项目→CI/CD→Pipelines,可看到所有Pipeline的执行状态(通过/失败/挂起)。
  • 查看Job日志:点击具体Pipeline中的Job(如build_job),可查看详细执行日志(包括命令输出、错误信息),便于快速定位问题。
  • 重试失败Job:若某Job失败,可直接点击“Retry”按钮重新执行(无需推送新代码)。

5. 高级配置(可选)

  • 使用Docker Runner:若项目需要特定环境(如Node.js、Python),可将Runner配置为Docker执行器,指定基础镜像。示例如下:
    test_job:
      stage: test
      image: node:18                   # 使用Node.js 18镜像
      script:
        - npm install
        - npm test
    
  • 配置变量:将敏感信息(如数据库密码、API密钥)存入GitLab项目→Settings→CI/CD→Variables,然后在.gitlab-ci.yml中通过$变量名引用(如$DB_PASSWORD),避免硬编码。
  • 自动触发Webhook:在GitLab项目→Settings→CI/CD→Webhooks中添加Webhook URL(如Jenkins或自定义接口),当代码推送时自动触发Pipeline(无需手动推送)。

0