阅读量:81
Ubuntu环境下GitLab持续集成(CI)配置指南
持续集成(CI)是现代软件开发的关键实践,GitLab通过内置的CI/CD工具链简化了自动化流程的实现。以下是在Ubuntu系统上配置GitLab CI的详细步骤,涵盖从环境准备到流程触发的完整流程。
一、前置准备:安装GitLab
若尚未部署GitLab,需先完成安装(以Ubuntu 22.04为例):
- 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y sudo apt install -y curl openssh-server ca-certificates tzdata perl - 添加GitLab软件源并安装
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt install -y gitlab-ce - 配置并启动GitLab
编辑外部URL(替换为服务器IP或域名):保存后重新配置并启动服务:sudo nano /etc/gitlab/gitlab.rb # 修改以下行(例如:external_url 'http://192.168.1.100')
访问sudo gitlab-ctl reconfigure sudo gitlab-ctl starthttp://<服务器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:定义流程阶段(如
build→test→deploy),Job需归属某一阶段; - script:指定Job执行的命令(如
mvn package); - artifacts:传递构建产物至后续阶段(避免重复构建);
- only/except:控制Job触发条件(如
only: - main表示仅main分支变更时触发)。
四、触发CI/CD流程
配置完成后,通过以下方式触发流程:
- 自动触发:将代码推送至GitLab仓库(如
git push origin main),Runner会自动检测.gitlab-ci.yml并执行对应Job; - 手动触发:在GitLab项目→CI/CD→Pipelines页面,点击"Run pipeline"手动启动。
五、监控与调试
- 查看Pipeline状态:在GitLab项目→CI/CD→Pipelines页面,可查看所有Pipeline的执行状态(成功/失败/进行中);
- 查看Job日志:点击具体Pipeline中的Job(如
build_job),可查看详细执行日志(用于调试失败问题); - 重试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、添加代码质量检查等)。