From a39c3ea6ec6fff4e29a456fd1b896a93fa1af80b Mon Sep 17 00:00:00 2001 From: liaowei <532810027@qq.com> Date: Sun, 1 Sep 2024 14:05:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95Drone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 101 ++++++++++++++++++++++++++++++++++ DockerSH/docker-auth.sh | 21 +++++++ DockerSH/docker-gateway.sh | 21 +++++++ Dockerfile/Dockerfile-auth | 23 ++++++++ Dockerfile/Dockerfile-gateway | 23 ++++++++ StartSH/start-auth.sh | 8 +++ StartSH/start-gateway.sh | 8 +++ 7 files changed, 205 insertions(+) create mode 100644 .drone.yml create mode 100644 DockerSH/docker-auth.sh create mode 100644 DockerSH/docker-gateway.sh create mode 100644 Dockerfile/Dockerfile-auth create mode 100644 Dockerfile/Dockerfile-gateway create mode 100644 StartSH/start-auth.sh create mode 100644 StartSH/start-gateway.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..fd14b5a --- /dev/null +++ b/.drone.yml @@ -0,0 +1,101 @@ +kind: pipeline +type: docker +name: testxxx + +steps: + # 1.maven打包gateway网关模块 + - name: maven compile gateway + pull: if-not-exists + # 构建镜像的maven+jdk选择,最好选择满足匹配你的项目版本的;这里的maven是maven3 + image: adoptopenjdk/maven-openjdk8 + volumes: + # maven构建缓存,也就是下面的/home/zeroerr/drone/maven/cache + - name: maven-cache + path: /root/.m2 + # 挂载宿主机的目录;也就是下面的/home/zeroerr/drone/maven/build + - name: maven-build-gateway + path: /drone/build/gateway + commands: + # 开始打包maven工程 + - mvn clean package -Dmaven.test.skip=true + # 将打包后的文件复制到宿主机映射目录,由于该项目打包后jar包在zeroerr_oa-admin模块下,所以这里一定要注意,每个项目都不一样。 + - cp zeroerroa-gateway/target/*.jar /drone/build/gateway + - cp Dockerfile/Dockerfile-gateway /drone/build/gateway + - cp DockerSH/docker-gateway.sh /drone/build/gateway + - cp StartSH/start-gateway.sh /drone/build/gateway + + # 2.maven打包auth权限验证 + - name: maven compile auth + pull: if-not-exists + # 构建镜像的maven+jdk选择,最好选择满足匹配你的项目版本的;这里的maven是maven3 + image: adoptopenjdk/maven-openjdk8 + volumes: + # maven构建缓存,也就是下面的/home/zeroerr/drone/maven/cache + - name: maven-cache + path: /root/.m2 + # 挂载宿主机的目录;也就是下面的/home/zeroerr/drone/maven/build/auth + - name: maven-build-auth + path: /drone/build/auth + commands: + # 开始打包maven工程 + - mvn clean package -Dmaven.test.skip=true + # 将打包后的文件复制到宿主机映射目录,由于该项目打包后jar包在zeroerr_oa-admin模块下,所以这里一定要注意,每个项目都不一样。 + - cp zeroerroa-auth/target/*.jar /drone/build/auth + - cp Dockerfile/Dockerfile-auth /drone/build/auth + - cp DockerSH/docker-auth.sh /drone/build/auth + - cp StartSH/start-auth.sh /drone/build/auth + + - name: build docker gateway + image: plugins/docker + volumes: + # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 + - name: maven-build-gateway + path: /drone/build/gateway # 将应用打包好的Jar和执行脚本挂载出来 + - name: docker + path: /var/run/docker.sock # 挂载宿主机的docker + settings: + dockerfile: /drone/build/Dockerfile-gateway #这里的Dockerfile就是项目根目录里的Dockerfile,必须保证名字和内容无误 + commands: + # 定义在Docker容器中执行的shell命令 + - cd /drone/build/gateway + - chmod +x docker-gateway.sh + - sh docker-gateway.sh + - docker ps + + - name: build docker auth + image: plugins/docker + volumes: + # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 + - name: maven-build-auth + path: /drone/build/auth # 将应用打包好的Jar和执行脚本挂载出来 + - name: docker + path: /var/run/docker.sock # 挂载宿主机的docker + settings: + dockerfile: /drone/build/Dockerfile-auth #这里的Dockerfile就是项目根目录里的Dockerfile,必须保证名字和内容无误 + commands: + # 定义在Docker容器中执行的shell命令 + - cd /drone/build/auth + - chmod +x docker-auth.sh + - sh docker-auth.sh + - docker ps + + +volumes: # 定义流水线挂载目录,用于共享数据 + - name: maven-build-gateway + host: + path: /home/zeroerr/drone/maven/build/gateway # 从宿主机中挂载的目录 + - name: maven-build-auth + host: + path: /home/zeroerr/drone/maven/build/auth # 从宿主机中挂载的目录 + - name: maven-cache + host: + path: /home/zeroerr/drone/maven/cache # 从宿主机中挂载的目录 + - name: docker + host: + path: /var/run/docker.sock + + +# drone执行触发器 +trigger: + branch: + - master diff --git a/DockerSH/docker-auth.sh b/DockerSH/docker-auth.sh new file mode 100644 index 0000000..b3f39ae --- /dev/null +++ b/DockerSH/docker-auth.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# 定义应用组名 +group_name='zeroerr' +# 定义应用名称 +app_name='auth' +# 定义应用版本 +app_version='latest' +echo '---------- 停止旧容器 ----------' +docker stop ${app_name} +echo '---------- 删除旧容器 ----------' +docker rm ${app_name} +echo '---------- 删除旧镜像 ----------' +docker rmi ${group_name}/${app_name}:${app_version} +echo '---------- 打包新镜像 ----------' +docker build -t ${group_name}/${app_name}:${app_version} . +echo '---------- 运行新镜像 ----------' +docker run -p 9200:9200 --name ${app_name} \ +-e TZ="Asia/Shanghai" \ +-v /etc/localtime:/etc/localtime \ +-d ${group_name}/${app_name}:${app_version} +echo '----start container----' diff --git a/DockerSH/docker-gateway.sh b/DockerSH/docker-gateway.sh new file mode 100644 index 0000000..61fd5d9 --- /dev/null +++ b/DockerSH/docker-gateway.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# 定义应用组名 +group_name='zeroerr' +# 定义应用名称 +app_name='gateway' +# 定义应用版本 +app_version='latest' +echo '---------- 停止旧容器 ----------' +docker stop ${app_name} +echo '---------- 删除旧容器 ----------' +docker rm ${app_name} +echo '---------- 删除旧镜像 ----------' +docker rmi ${group_name}/${app_name}:${app_version} +echo '---------- 打包新镜像 ----------' +docker build -t ${group_name}/${app_name}:${app_version} . +echo '---------- 运行新镜像 ----------' +docker run -p 8080:8080 --name ${app_name} \ +-e TZ="Asia/Shanghai" \ +-v /etc/localtime:/etc/localtime \ +-d ${group_name}/${app_name}:${app_version} +echo '----start container----' diff --git a/Dockerfile/Dockerfile-auth b/Dockerfile/Dockerfile-auth new file mode 100644 index 0000000..6448db4 --- /dev/null +++ b/Dockerfile/Dockerfile-auth @@ -0,0 +1,23 @@ +# 使用 dockette/openjdk8 作为基础镜像 +FROM dockette/openjdk8 + +# 设置环境变量 +ENV SERVIECE_PORT=9200 + +# 创建目录 +RUN mkdir -p /drone/auth + +# 设置工作目录 +WORKDIR /drone/auth + +# 复制 start-gateway.sh 脚本到容器内 +COPY ../StartSH/start-auth.sh /drone/auth + +# 复制 JAR 文件到容器内 +COPY ./*.jar /drone/auth + +# 赋予 /drone/ 目录下所有文件可执行权限 +RUN chmod 755 -R /drone/auth + +# 设置容器的入口点 +ENTRYPOINT ["/drone/start-auth.sh"] diff --git a/Dockerfile/Dockerfile-gateway b/Dockerfile/Dockerfile-gateway new file mode 100644 index 0000000..c895202 --- /dev/null +++ b/Dockerfile/Dockerfile-gateway @@ -0,0 +1,23 @@ +# 使用 dockette/openjdk8 作为基础镜像 +FROM dockette/openjdk8 + +# 设置环境变量 +ENV SERVIECE_PORT=8080 + +# 创建目录 +RUN mkdir -p /drone/gateway + +# 设置工作目录 +WORKDIR /drone/gateway + +# 复制 start-gateway.sh 脚本到容器内 +COPY ../StartSH/start-gateway.sh /drone/gateway + +# 复制 JAR 文件到容器内 +COPY ./*.jar /drone/gateway + +# 赋予 /drone/ 目录下所有文件可执行权限 +RUN chmod 755 -R /drone/gateway + +# 设置容器的入口点 +ENTRYPOINT ["/drone/start-gateway.sh"] diff --git a/StartSH/start-auth.sh b/StartSH/start-auth.sh new file mode 100644 index 0000000..72d0b0e --- /dev/null +++ b/StartSH/start-auth.sh @@ -0,0 +1,8 @@ +#!/bin/sh +java -Xms256m -Xmx256m -jar /drone/auth/*.jar + +if [ $? != 0 ]; then + echo Failed to start java >&2 + exit 1 +fi + diff --git a/StartSH/start-gateway.sh b/StartSH/start-gateway.sh new file mode 100644 index 0000000..16be7d3 --- /dev/null +++ b/StartSH/start-gateway.sh @@ -0,0 +1,8 @@ +#!/bin/sh +java -Xms256m -Xmx256m -jar /drone/gateway/*.jar + +if [ $? != 0 ]; then + echo Failed to start java >&2 + exit 1 +fi +