From f5039c0ab6108252687f53bc520cab6f04ebbc5f Mon Sep 17 00:00:00 2001 From: gxl Date: Tue, 2 Jun 2026 13:31:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(ci):=20=E6=B7=BB=E5=8A=A0=20Woodpecker=20C?= =?UTF-8?q?I=20=E9=85=8D=E7=BD=AE=E5=AE=9E=E7=8E=B0=20Java=20=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E8=87=AA=E5=8A=A8=E6=9E=84=E5=BB=BA=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 配置了 Maven 构建步骤,支持依赖缓存加速 - 添加了 Docker 镜像构建和推送流程 - 设置了阿里云容器镜像服务仓库地址 - 创建了 Dockerfile 定义 Java 运行环境 - 配置了 JVM 参数优化和时区设置 - 添加了构建说明文档 1.txt --- .woodpecker.yaml | 43 +++++++++++++++++++++++++++++++++++++++++++ 1.txt | 5 +++++ Dockerfile | 19 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 .woodpecker.yaml create mode 100644 1.txt create mode 100644 Dockerfile diff --git a/.woodpecker.yaml b/.woodpecker.yaml new file mode 100644 index 0000000..03f2123 --- /dev/null +++ b/.woodpecker.yaml @@ -0,0 +1,43 @@ +# .woodpecker.yaml +workflows: + build-and-deploy: + name: Java应用构建与部署 + # 触发条件,仅在 main/master 分支推送时运行 + when: + - event: push + branch: main + - event: push + branch: master + + steps: + # 1. 使用 Maven 构建 Java 应用,并缓存依赖 + - name: Java 构建 + image: maven:3.9.6-eclipse-temurin-17 + pull: true + commands: + - mvn clean package -DskipTests # 跳过测试以加快构建 + volumes: + - /tmp/maven-cache:/root/.m2 # 缓存 Maven 依赖 + + # 2. 将构建好的 JAR 文件打包为 Docker 镜像 + - name: Docker 构建 + image: docker:latest + pull: true + commands: + - docker build -t registry.cn-zhangjiakou.aliyuncs.com/abhors/demo:latest . + volumes: + - /var/run/docker.sock:/var/run/docker.sock # ⚠️ Docker in Docker 挂载 + + # 3. 将打包好的镜像推送到 Docker Hub + - name: 镜像推送 + image: plugins/docker + settings: + # ⚠️ 关键配置:必须准确填写 + repo: registry.cn-zhangjiakou.aliyuncs.com/abhors/demo + registry: registry.cn-zhangjiakou.aliyuncs.com + tags: latest + dockerfile: ./Dockerfile + username: + from_secret: docker_hub_user # 从 Woodpecker UI 获取的 Docker Hub 用户名 + password: + from_secret: docker_hub_pass # 从 Woodpecker UI 获取的 Docker Hub 密码或 Token \ No newline at end of file diff --git a/1.txt b/1.txt new file mode 100644 index 0000000..be74767 --- /dev/null +++ b/1.txt @@ -0,0 +1,5 @@ +your-dockerhub-username 你的 Docker Hub 用户名或组织名。 abhors +your-app-name 你的 Java 应用对应的 Docker 镜像名称。 demo +docker_username / docker_password 这是流水线中引用的密钥名称。你需要在 Woodpecker UI 的设置页面中,将你的 Docker Hub 真实凭证添加为这两个密钥,流水线才能访问它们。 在 UI 中配置 +/tmp/maven-cache:/root/.m2 Maven 缓存。将宿主机目录挂载到容器内,可以复用 Maven 本地仓库,加速构建。 +/var/run/docker.sock:/var/run/docker.sock Docker socket 挂载。这允许流水线在容器内直接调用宿主机的 Docker 守护进程来构建镜像。 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9c6e1fa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM ibm-semeru-runtimes:open-17-jre +COPY ./target/*.jar /opt/app.jar +#暴露端口 +EXPOSE 8080 + +#COPY ./cert /opt/cert/ + +#ENV TZ=PRC +#RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +#启动 如果启动时想要添加额外的配置可以通过docker run -e PARAM="-Dserver.port=8000 -Dspring.profiles.active-prod" +ENV PROFILES="dev" + +ENV JVM_OPTS="-Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Xloggc:gc/gc.log -XX:+PrintGCDateStamps -XX:+PrintGC -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:NumberOfGCLogFiles=2 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=100m" + +# ENTRYPOINT exec java -Dspring.profiles.active=$PROFILES $JVM_OPTS -jar /opt/app.jar +ENTRYPOINT ["sh", "-c", "java -Dspring.profiles.active=$PROFILES $JVM_OPTS -jar /opt/app.jar"] + +#ENTRYPOINT ["nohup","java", "-Xms256m", "-Xmx512m", "-XX:MetaspaceSize=128m", "-XX:MaxMetaspaceSize=512m","-Dfile.encoding=utf-8", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar", "$PROFILES_ACTIVE", "> /logs/lotpig-app.log 2>&1 &" ] +