以下是针对 Java 项目的 GitLab 流水线详细配置指南,按步骤拆解为傻瓜式操作流程,每个步骤均包含解释和示例:
步骤 1:创建 .gitlab-ci.yml
文件
操作:
在项目根目录创建名为 .gitlab-ci.yml
的文件(无文件名前缀)。
解释:
此文件是流水线的核心配置文件,GitLab 会自动检测并执行它。
# 示例配置(Java + Maven 项目)
stages:
- build # 阶段1:编译代码
- test # 阶段2:运行测试
- deploy # 阶段3:部署应用
# 阶段1:编译
build-job:
stage: build
image: maven:3.8.6-openjdk-11 # 使用 Maven 官方镜像
script:
- mvn clean package -DskipTests # 跳过测试,快速构建
artifacts:
paths:
- target/*.jar # 保存生成的 JAR 包
# 阶段2:测试
test-job:
stage: test
image: maven:3.8.6-openjdk-11
script:
- mvn test # 执行单元测试
needs: [build-job] # 依赖 build 阶段
# 阶段3:部署到服务器
deploy-job:
stage: deploy
image: alpine:latest # 轻量级系统
script:
- apk add openssh-client # 安装 SSH 工具
- scp -o StrictHostKeyChecking=no target/*.jar user@server:/app/ # 复制 JAR 到服务器
only:
- main # 仅 main 分支触发部署
步骤 2:配置 GitLab Runner
操作:
在服务器上安装并注册 Runner。
详细步骤:
-
安装 Runner(Linux 示例):
# 下载二进制文件 curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64" # 赋予执行权限 chmod +x gitlab-runner-linux-amd64 # 移动到系统路径 sudo mv gitlab-runner-linux-amd64 /usr/local/bin/gitlab-runner
-
注册 Runner:
sudo gitlab-runner register
- 输入 GitLab 实例 URL:
[https://gitlab.com](https://gitlab.com)
(或私有地址) - 输入 Runner Token(在 GitLab 项目页:
Settings > CI/CD > Runners
查看) - 输入描述(如
java-runner
) - 输入标签(如
java, maven
) - 选择 Executor:推荐
docker
- 输入 GitLab 实例 URL:
-
启动 Runner:
sudo gitlab-runner start
步骤 3:配置 Maven 加速(优化依赖下载)
操作:
在项目根目录创建 settings.xml
文件,配置国内镜像源。
解释:
避免因网络问题导致依赖下载失败。
<!-- settings.xml 示例 -->
<settings>
<mirrors>
<mirror>
<id>aliyun</id>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
在 .gitlab-ci.yml
中引用:
build-job:
stage: build
script:
- mvn clean package -s settings.xml -DskipTests # 指定配置文件
步骤 4:设置环境变量(保护敏感信息)
操作:
在 GitLab 项目页添加安全变量。
路径:Settings > CI/CD > Variables
需添加的变量:
Key | Value | 作用 |
---|---|---|
SSH_PRIVATE_KEY | 服务器的私钥 | 用于 SCP 部署 |
SERVER_IP | 192.168.1.100 | 部署目标服务器 IP |
DEPLOY_USER | root | 服务器用户名 |
在 .gitlab-ci.yml
中使用变量:
deploy-job:
script:
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- scp target/*.jar ${DEPLOY_USER}@${SERVER_IP}:/app/
步骤 5:配置缓存(加速后续构建)
操作:
在 .gitlab-ci.yml
中缓存 Maven 依赖。
解释:
避免每次构建重复下载依赖。
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- .m2/repository/ # 缓存本地仓库
build-job:
script:
- mvn package -DskipTests
步骤 6:触发流水线
方式 1:代码推送自动触发
- 推送代码到仓库(如
git push origin main
) - 进入 GitLab 项目页:
CI/CD > Pipelines
查看运行状态
方式 2:手动触发
- 进入
CI/CD > Pipelines > Run Pipeline
- 选择分支(如
main
),点击 Run pipeline
方式 3:定时触发
- 进入
CI/CD > Schedules > New schedule
- 设置 Cron 表达式(如
0 2 * * *
每天凌晨 2 点)
步骤 7:查看结果与排错
-
成功标志:
- 流水线状态变为 Passed(绿色)
- 部署服务器上出现 JAR 包:
/app/your-project.jar
-
失败排查:
- 进入失败 Job 的 Logs 查看报错
- 常见问题:
- 依赖下载失败 → 检查
settings.xml
镜像配置 - SCP 连接超时 → 检查
SSH_PRIVATE_KEY
和服务器防火墙 - 测试不通过 → 检查单元测试代码
- 依赖下载失败 → 检查
最终效果
graph LR
A[代码推送] --> B[自动触发流水线]
B --> C1[Build 阶段:编译 JAR]
C1 --> C2[Test 阶段:运行单元测试]
C2 --> C3[Deploy 阶段:部署到服务器]
C3 --> D[生产环境运行应用]
通过以上 7 步,即可为 Java 项目搭建完整的 GitLab CI/CD 流水线。关键要点:
- 配置文件必须命名为
.gitlab-ci.yml
- Runner 需在线且标签匹配
- 敏感信息通过 Variables 传递
- 利用缓存加速构建