温馨提示×

ubuntu gitlab持续集成如何配置

小樊
49
2025-11-09 05:34:08
栏目: 智能运维

Ubuntu环境下GitLab持续集成(CI)配置指南

持续集成(CI)是现代软件开发的关键实践,GitLab通过内置的CI/CD工具链简化了自动化流程的实现。以下是在Ubuntu系统上配置GitLab CI的详细步骤,涵盖从环境准备到流程触发的完整流程。

一、前置准备:安装GitLab

若尚未部署GitLab,需先完成安装(以Ubuntu 22.04为例):

  1. 更新系统并安装依赖
    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl openssh-server ca-certificates tzdata perl
    
  2. 添加GitLab软件源并安装
    curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
    sudo apt install -y gitlab-ce
    
  3. 配置并启动GitLab
    编辑外部URL(替换为服务器IP或域名):
    sudo nano /etc/gitlab/gitlab.rb
    # 修改以下行(例如:external_url 'http://192.168.1.100')
    
    保存后重新配置并启动服务:
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl start
    
    访问http://<服务器IP>,通过初始管理员账号(root)登录。

二、安装与注册GitLab Runner

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

1. 安装GitLab Runner

# 添加Runner官方仓库并安装
curl -L --output /etc/apt/trusted.gpg.d/gitlab.asc https://packages.gitlab.com/gitlab/gitlab-runner/gpgkey
echo "deb https://packages.gitlab.com/gitlab/gitlab-runner/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab-runner.list
sudo apt update
sudo apt install -y gitlab-runner

2. 注册Runner

运行注册命令,按提示输入GitLab实例URL(如http://192.168.1.100)和项目注册令牌(从GitLab项目→Settings→CI/CD→Runners获取):

sudo gitlab-runner register
  • 关键参数说明
    --executor:选择执行器(推荐shell(本地环境)或docker(隔离环境));
    --description:Runner描述(如"My Ubuntu Runner");
    --tag-list:设置标签(如ci,ubuntu),用于匹配项目中的Runner需求。

三、配置.gitlab-ci.yml文件

.gitlab-ci.yml是CI/CD流程的核心配置文件,需放置在项目根目录下。以下是一个基础示例(适用于Java/Maven项目):

# 定义CI/CD阶段(按顺序执行)
stages:
  - build
  - test
  - deploy

# 构建阶段:编译项目
build_job:
  stage: build
  script:
    - echo "Building project with Maven..."
    - mvn clean package
  artifacts:
    paths:
      - target/*.jar  # 保存构建产物(供后续阶段使用)
    expire_in: 1 hour  # 产物过期时间

# 测试阶段:运行单元测试
test_job:
  stage: test
  script:
    - echo "Running unit tests..."
    - mvn test
  # 仅在前一阶段成功时执行(默认行为)

# 部署阶段:将产物部署到测试服务器
deploy_job:
  stage: deploy
  script:
    - echo "Deploying to test server..."
    - scp target/*.jar user@test-server:/opt/app/
  only:
    - main  # 仅main分支变更时触发

关键配置说明

  • stages:定义流程阶段(如buildtestdeploy),Job需归属某一阶段;
  • script:指定Job执行的命令(如mvn package);
  • artifacts:传递构建产物至后续阶段(避免重复构建);
  • only/except:控制Job触发条件(如only: - main表示仅main分支变更时触发)。

四、触发CI/CD流程

配置完成后,通过以下方式触发流程:

  1. 自动触发:将代码推送至GitLab仓库(如git push origin main),Runner会自动检测.gitlab-ci.yml并执行对应Job;
  2. 手动触发:在GitLab项目→CI/CD→Pipelines页面,点击"Run pipeline"手动启动。

五、监控与调试

  1. 查看Pipeline状态:在GitLab项目→CI/CD→Pipelines页面,可查看所有Pipeline的执行状态(成功/失败/进行中);
  2. 查看Job日志:点击具体Pipeline中的Job(如build_job),可查看详细执行日志(用于调试失败问题);
  3. 重试Job:若Job失败,可点击"Retry"按钮重新执行。

六、高级配置(可选)

  • 使用Docker Executor:若需隔离环境,可将Runner配置为docker执行器(修改gitlab-runner register时的--executor参数),并在.gitlab-ci.yml中指定镜像(如image: maven:3.8.6-openjdk-11);
  • 缓存依赖:通过cache配置加速构建(如缓存Maven本地仓库):
    cache:
      paths:
        - .m2/repository/  # Maven本地仓库路径
    
  • 环境变量:在GitLab项目→Settings→CI/CD→Variables中配置敏感信息(如数据库密码、API密钥),避免硬编码在.gitlab-ci.yml中。

通过以上步骤,即可在Ubuntu环境下完成GitLab CI的基本配置,实现代码的自动化构建、测试与部署。根据项目需求,可进一步扩展流程(如集成Kubernetes、添加代码质量检查等)。

0