|
|
@@ -2,6 +2,7 @@ kind: pipeline
|
|
|
type: docker
|
|
|
name: default
|
|
|
|
|
|
+# 触发分支
|
|
|
trigger:
|
|
|
branch:
|
|
|
- master
|
|
|
@@ -23,16 +24,19 @@ steps:
|
|
|
# 打包 prod
|
|
|
- name: build-prod
|
|
|
image: matderosa/maven-3.8-openjdk-17-gcc8.5
|
|
|
- volumes:
|
|
|
+ volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
|
|
|
- name: maven-cache
|
|
|
- path: /root/.m2
|
|
|
+ path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
|
|
|
- name: maven-build
|
|
|
- path: /app/build
|
|
|
+ path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
|
|
|
commands:
|
|
|
- - mvn clean package -P prod -DskipTests
|
|
|
+ - mvn clean package -P prod -DskipTests #(-DskipTests 跳过测试)
|
|
|
+ # (此时拷贝的内容是仓库分支拉下来的代码)
|
|
|
- mkdir -p /app/build/target
|
|
|
-# - cp -r target/libs /app/build/libs
|
|
|
+# - cp -r target/libs /app/build/libs (有新依赖需要打开)
|
|
|
+ # 将打包好的 Jar包 拷贝到指定目录
|
|
|
- cp target/test.jar /app/build/target/test.jar
|
|
|
+ # 将配置文件从最新的分支 拷贝到目标目录
|
|
|
- cp Dockerfile /app/build/Dockerfile
|
|
|
- cp docker-compose.yml /app/build/docker-compose.yml
|
|
|
when:
|
|
|
@@ -40,6 +44,7 @@ steps:
|
|
|
master
|
|
|
|
|
|
# 打包 dev
|
|
|
+ # - 在同个服务器时,docker-compose.yml 需要修改服务名
|
|
|
- name: build-dev
|
|
|
image: matderosa/maven-3.8-openjdk-17-gcc8.5
|
|
|
volumes:
|
|
|
@@ -50,6 +55,7 @@ steps:
|
|
|
commands:
|
|
|
- mvn clean package -P dev -DskipTests
|
|
|
- mkdir -p /app/build/target
|
|
|
+ # - cp -r target/libs /app/build/libs 有新依赖需要打开
|
|
|
- cp target/test-dev.jar /app/build/target/test-dev.jar
|
|
|
- cp Dockerfile /app/build/Dockerfile
|
|
|
- cp docker-compose.yml /app/build/docker-compose.yml
|
|
|
@@ -91,9 +97,14 @@ steps:
|
|
|
from_secret: ssh_pwd
|
|
|
command_timeout: 1m
|
|
|
script:
|
|
|
+ # (此时是在 SSH登录服务器 的作用域)
|
|
|
+ # Docker 启动
|
|
|
- cd /home/TestApp
|
|
|
+ # 根据 Dockerfile 配置创建镜像 (名称需要小写)
|
|
|
- sudo docker build -t test .
|
|
|
+ # 停止容器
|
|
|
- sudo docker-compose down
|
|
|
+ # 启动容器 (根据 docker-compose.yml 配置)
|
|
|
- sudo docker-compose up -d
|
|
|
- sudo echo "Docker App started."
|
|
|
when:
|
|
|
@@ -138,7 +149,7 @@ steps:
|
|
|
when:
|
|
|
branch: develop
|
|
|
|
|
|
- # 清理镜像
|
|
|
+ # 清除冗余镜像
|
|
|
- name: cleanup
|
|
|
image: docker:dind
|
|
|
volumes:
|
|
|
@@ -147,15 +158,16 @@ steps:
|
|
|
when:
|
|
|
status: [ success ]
|
|
|
commands:
|
|
|
- - docker image prune -f --filter "dangling=true" --filter "until=1h"
|
|
|
+ # 删除1小时前创建的未使用镜像
|
|
|
+ - docker image prune -f --filter "until=1h"
|
|
|
|
|
|
-volumes:
|
|
|
+volumes: # 定义流水线挂载目录,用于共享数据
|
|
|
- name: maven-build
|
|
|
host:
|
|
|
- path: /home/TestApp
|
|
|
+ path: /home/TestApp # 从宿主机中挂载的目录
|
|
|
- name: maven-build-dev
|
|
|
host:
|
|
|
- path: /home/TestAppDev
|
|
|
+ path: /home/TestAppDev # 从宿主机中挂载的目录
|
|
|
- name: maven-cache
|
|
|
host:
|
|
|
path: /root/docker/maven/cache
|