This commit is contained in:
2026-05-15 09:05:53 +08:00
parent 84e70aff12
commit 817cbea100

View File

@@ -1,113 +1,124 @@
variables: #变量 variables:
#网关 # 网关/服务配置(保持不变)
MES_BACK_CONTAINER: "mowen-blog-admin-api" MES_BACK_CONTAINER: "mowen-blog-admin-api"
MES_BACK_IMAGE: "mowen-blog-admin-api" MES_BACK_IMAGE: "mowen-blog-admin-api"
MES_BACK_PORT: 8080 MES_BACK_PORT: 8080
MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=/mydata/jun/back_project/.m2" #指定maven的存储目录
# Maven 本地仓库改用项目目录下的 .m2/repository避免宿主机权限问题
MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=${CI_PROJECT_DIR}/.m2/repository"
# 全局缓存:缓存 Maven 本地仓库,加速后续构建
cache: cache:
key: "${CI_COMMIT_REF_SLUG}-maven"
paths: paths:
- /mydata/jun/back_project/.m2 - .m2/repository/
stages: stages:
- build - build
- deploy - deploy
# ==================== 构建阶段 ====================
build-dev:jdk17: build-dev:jdk17:
stage: build stage: build
image: moshangjunmowen/maven-jdk17:v3
script: script:
- echo "=============== 开始编译打包任务 ===============" - echo "=============== 开始编译打包任务dev ==============="
- mvn clean package -DskipTests -P dev - mvn clean package -DskipTests -P dev
#服务 # 将 Dockerfile 和 jar 收集到 build 目录,供 artifacts 传递
- mkdir -p /mydata/mowen-blog/back_project/app - mkdir -p build
- cp Dockerfile /mydata/mowen-blog/back_project/app - cp Dockerfile build/
- cp mes-admin/target/mowen-admin-dev-1.0.0.jar /mydata/mowen-blog/back_project/app - cp mes-admin/target/mowen-admin-dev-1.0.0.jar build/
artifacts: artifacts:
paths: paths:
- build/ - build/
expire_in: 1 day # 产物保留时间,按需调整
only: only:
- dev #当有代码合到主干时触发这个job - dev
tags: tags:
- blog-dev - blog-dev
image: moshangjunmowen/maven-jdk17:v3
build-test:jdk17: build-test:jdk17:
stage: build stage: build
image: moshangjunmowen/maven-jdk17:v3
script: script:
- echo "=============== 开始编译打包任务 ===============" - echo "=============== 开始编译打包任务test ==============="
- mvn clean package -Dmaven.test.skip=true -P test - mvn clean package -Dmaven.test.skip=true -P test
#服务 - mkdir -p build
- mkdir -p /mydata/mowen-blog/back_project/app - cp Dockerfile build/
- cp Dockerfile /mydata/mowen-blog/back_project/app - cp mes-admin/target/mowen-admin-test-1.0.0.jar build/
- cp mes-admin/target/mowen-admin-test-1.0.0.jar /mydata/mowen-blog/back_project/app
artifacts: artifacts:
paths: paths:
- build/ - build/
expire_in: 1 day
only: only:
- test #当有代码合到主干时触发这个job - test
tags: tags:
- mes-test - mes-test
image: moshangjunmowen/maven-jdk17:v3
build-prod:jdk17: build-prod:jdk17:
stage: build stage: build
image: moshangjunmowen/maven-jdk17:v3
script: script:
- echo "=============== 开始编译打包任务 ===============" - echo "=============== 开始编译打包任务prod ==============="
- mvn clean package -Dmaven.test.skip=true -P prod - mvn clean package -Dmaven.test.skip=true -P prod
#服务 - mkdir -p build
- mkdir -p /mydata/mowen-blog/back_project/app - cp Dockerfile build/
- cp Dockerfile /mydata/mowen-blog/back_project/app - cp mes-admin/target/mowen-admin-prod-1.0.0.jar build/
- cp mes-admin/target/mowen-admin-prod-1.0.0.jar /mydata/mowen-blog/back_project/app
artifacts: artifacts:
paths: paths:
- build/ - build/
expire_in: 1 day
only: only:
- main #当有代码合到主干时触发这个job - main
tags: tags:
- pioneer-mes-prod - pioneer-mes-prod
image: moshangjunmowen/maven-jdk17:v3
# ==================== 部署阶段 ====================
deploy-dev:jdk17: deploy-dev:jdk17:
stage: deploy stage: deploy
image: docker:29.4.3 #目的是为了在docker环境下的runner能执行docker命令 image: docker:29.4.3 # 使用 docker 镜像执行部署命令
needs: ["build-dev:jdk17"] # 明确依赖构建产物,确保顺序
script: script:
- echo "=============== 开始部署应用 ===============" - 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 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 images | grep $MES_BACK_IMAGE && docker rmi -f $MES_BACK_IMAGE || echo "not exist"
- docker build --build-arg JAR_FILE=mowen-admin-dev-1.0.0.jar -t $MES_BACK_IMAGE /mydata/mowen-blog/back_project/app # 构建上下文为当前目录build/),直接使用 Dockerfile 和 jar
- docker build --build-arg JAR_FILE=mowen-admin-dev-1.0.0.jar -t $MES_BACK_IMAGE .
- docker run -d --restart=always --network=host --log-opt max-size=50m --log-opt max-file=3 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE - docker run -d --restart=always --network=host --log-opt max-size=50m --log-opt max-file=3 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE
only: only:
- dev #当有代码合到主干时触发这个job - dev
tags: tags:
- dev - dev
deploy-test:jdk17: deploy-test:jdk17:
stage: deploy stage: deploy
image: docker:29.4.3 #目的是为了在docker环境下的runner能执行docker命令 image: docker:29.4.3
needs: ["build-test:jdk17"]
script: script:
- echo "=============== 开始部署应用 ===============" - 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 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 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 /mydata/mowen-blog/back_project/app - docker build --build-arg JAR_FILE=mowen-admin-test-1.0.0.jar -t $MES_BACK_IMAGE .
- docker run -d --restart=always --network=host --log-opt max-size=50m --log-opt max-file=3 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE - docker run -d --restart=always --network=host --log-opt max-size=50m --log-opt max-file=3 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE
only: only:
- test #当有代码合到主干时触发这个job - test
tags: tags:
- mes-test - mes-test
deploy-prod:jdk17: deploy-prod:jdk17:
stage: deploy stage: deploy
image: docker:29.4.3 #目的是为了在docker环境下的runner能执行docker命令 image: docker:29.4.3
needs: ["build-prod:jdk17"]
script: 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 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 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 /mydata/mowen-blog/back_project/app - docker build --build-arg JAR_FILE=mowen-admin-prod-1.0.0.jar -t $MES_BACK_IMAGE .
- docker run -d --restart=always --network=host --log-opt max-size=50m --log-opt max-file=5 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE - docker run -d --restart=always --network=host --log-opt max-size=50m --log-opt max-file=5 --name $MES_BACK_CONTAINER $MES_BACK_IMAGE
only: only:
- main #当有代码合到主干时触发这个job - main
tags: tags:
- pioneer-mes-prod - pioneer-mes-prod