Gitlab runner的使用示例(二):Maven + Docker 自动化构建与部署
在本篇文章中,我们将详细解析一个典型的 GitLab CI/CD 配置文件(gitlab-ci.yml
),该文件主要用于通过 Maven 构建 Java 应用,并使用 Docker 容器化部署。
配置文件整体长这样:
image: maven:3.8.4-openjdk-17
stages:
- build
- deploy
variables:
DOCKER_IMAGE: "achun-gallery-image"
DOCKER_CONTAINER_NAME: "achun-gallery-container"
# 构建阶段:Maven 打包
build-job:
stage: build
script:
- mvn clean install -DskipTests
- cd achun-gallery-app
- mvn clean package -DskipTests
tags:
- m5_service
only:
- main
artifacts:
paths:
- achun-gallery-app/target/**
# 部署阶段:使用 Docker 启动项目
deploy-job:
stage: deploy
script:
- docker stop $DOCKER_CONTAINER_NAME || true
- docker rm $DOCKER_CONTAINER_NAME || true
- cd achun-gallery-app
- docker build -t $DOCKER_IMAGE .
- docker run -d -v /data/logs/:/data/logs -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --restart always --name $DOCKER_CONTAINER_NAME -p 9519:9519 $DOCKER_IMAGE
tags:
- m5_service
only:
- main
dependencies:
- build-job
artifacts:
paths:
- achun-gallery-app/target/**
下面会逐步解释各个部分。
1. 基本镜像选择
image: maven:3.8.4-openjdk-17
在 GitLab CI/CD 中,image
用于指定 CI/CD 流水线运行时使用的基础镜像。这里我们选择的是 maven:3.8.4-openjdk-17
,这是一个预装了 Maven 3.8.4 和 OpenJDK 17 的官方 Docker 镜像,适合构建基于 Java 的 Maven 项目。
解释:
- Maven:负责项目的构建与管理,执行
mvn
命令。 - OpenJDK 17:项目使用的 Java 版本,确保代码可以在此 JDK 上编译和运行。
2. 定义阶段(stages)
stages