Files
MoWenAdmin-Api/.gitlab-ci.yml
2026-05-15 13:54:13 +08:00

127 lines
4.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
variables:
# 网关/服务配置(保持不变)
MES_BACK_CONTAINER: "mowen-blog-admin-api"
MES_BACK_IMAGE: "mowen-blog-admin-api"
MES_BACK_PORT: 8280
# Maven 本地仓库改用项目目录下的 .m2/repository避免宿主机权限问题
MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=${CI_PROJECT_DIR}/.m2/repository"
# 全局缓存:缓存 Maven 本地仓库,加速后续构建
cache:
key: "${CI_COMMIT_REF_SLUG}-maven"
paths:
- .m2/repository/
stages:
- build
- deploy
# ==================== 构建阶段 ====================
build-dev:jdk17:
stage: build
image: moshangjunmowen/maven-jdk17:v3
script:
- echo "=============== 开始编译打包任务dev ==============="
- mvn clean package -DskipTests -P dev
# 将 Dockerfile 和 jar 收集到 build 目录,供 artifacts 传递
- mkdir -p build
- cp Dockerfile build/
- cp mowen-admin/target/mowen-admin-dev-1.0.0.jar build/
artifacts:
paths:
- build/
expire_in: 1 day # 产物保留时间,按需调整
only:
- dev
tags:
- blog-dev
build-test:jdk17:
stage: build
image: moshangjunmowen/maven-jdk17:v3
script:
- echo "=============== 开始编译打包任务test ==============="
- mvn clean package -Dmaven.test.skip=true -P test
- mkdir -p build
- cp Dockerfile build/
- cp mowen-admin/target/mowen-admin-test-1.0.0.jar build/
artifacts:
paths:
- build/
expire_in: 1 day
only:
- test
tags:
- mes-test
build-prod:jdk17:
stage: build
image: moshangjunmowen/maven-jdk17:v3
script:
- echo "=============== 开始编译打包任务prod ==============="
- mvn clean package -Dmaven.test.skip=true -P prod
- mkdir -p build
- cp Dockerfile build/
- cp mowen-admin/target/mowen-admin-prod-1.0.0.jar build/
artifacts:
paths:
- build/
expire_in: 1 day
only:
- main
tags:
- pioneer-mes-prod
# ==================== 部署阶段 ====================
deploy-dev:jdk17:
stage: deploy
image: docker:29.4.3 # 使用 docker 镜像执行部署命令
needs: ["build-dev:jdk17"] # 明确依赖构建产物,确保顺序
script:
- echo "=============== 开始部署应用dev ==============="
- cd build # 进入 artifacts 传递过来的目录
- docker ps -a | grep $MES_BACK_CONTAINER && docker stop $MES_BACK_CONTAINER && docker rm $MES_BACK_CONTAINER || echo "not exist"
- docker images | grep $MES_BACK_IMAGE && docker rmi -f $MES_BACK_IMAGE || echo "not exist"
# 构建上下文为当前目录build/),直接使用 Dockerfile 和 jar
- docker build --build-arg JAR_FILE=mowen-admin-dev-1.0.0.jar -t $MES_BACK_IMAGE .
- docker network ls | grep -w jun-boot || docker network create jun-boot
- docker run -d --restart=always -p $MES_BACK_PORT:1024 --network=jun-boot --log-opt max-size=50m --log-opt max-file=3 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE
only:
- dev
tags:
- dev
deploy-test:jdk17:
stage: deploy
image: docker:29.4.3
needs: ["build-test:jdk17"]
script:
- echo "=============== 开始部署应用test ==============="
- cd build
- docker ps -a | grep $MES_BACK_CONTAINER && docker stop $MES_BACK_CONTAINER && docker rm $MES_BACK_CONTAINER || echo "not exist"
- docker images | grep $MES_BACK_IMAGE && docker rmi -f $MES_BACK_IMAGE || echo "not exist"
- docker build --build-arg JAR_FILE=mowen-admin-test-1.0.0.jar -t $MES_BACK_IMAGE .
- docker network ls | grep -w jun-boot || docker network create jun-boot
- docker run -d --restart=always -p $MES_BACK_PORT:1024 --network=jun-boot --log-opt max-size=50m --log-opt max-file=3 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE
only:
- test
tags:
- mes-test
deploy-prod:jdk17:
stage: deploy
image: docker:29.4.3
needs: ["build-prod:jdk17"]
script:
- echo "=============== 开始部署应用prod ==============="
- cd build
- docker ps -a | grep $MES_BACK_CONTAINER && docker stop $MES_BACK_CONTAINER && docker rm $MES_BACK_CONTAINER || echo "not exist"
- docker images | grep $MES_BACK_IMAGE && docker rmi -f $MES_BACK_IMAGE || echo "not exist"
- docker build --build-arg JAR_FILE=mowen-admin-prod-1.0.0.jar -t $MES_BACK_IMAGE .
- docker network ls | grep -w jun-boot || docker network create jun-boot
- docker run -d --restart=always -p $MES_BACK_PORT:1024 --network=jun-boot --log-opt max-size=50m --log-opt max-file=5 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE
only:
- main
tags:
- pioneer-mes-prod