From fbb6d9f48bee0ac9b712c238be9a4277afe582ab Mon Sep 17 00:00:00 2001 From: kale Date: Sun, 7 Dec 2025 21:56:08 -0500 Subject: [PATCH 1/3] =?UTF-8?q?[fix]:[20251208][=E6=9E=84=E5=BB=BAdocker]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 83 ++++++++++++++++++++++++++++++++++++++++++++++-------- pom.xml | 76 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 138 insertions(+), 21 deletions(-) diff --git a/.drone.yml b/.drone.yml index 950f769..b371f43 100644 --- a/.drone.yml +++ b/.drone.yml @@ -2,28 +2,47 @@ kind: pipeline type: docker name: multi-lang-ci +# 推荐工作区配置 - 修改为当前项目的正确路径 +workspace: + base: /drone + path: . + +# 定义缓存卷,用于存储 Maven 依赖 +volumes: + - name: cache + temp: {} + - name: npm-cache + path: /localcache/npmcache + # 添加 Maven 缓存卷(虽然通过 runner 挂载,但显式声明更清晰) + - name: maven-cache + path: /localcache/maven/repository + +# 触发器配置:针对 master 分支的 PR trigger: event: - pull_request + - push + - tag branch: - - main + - master -# 克隆策略:只拉最新 commit,加速 +# 默认克隆步骤 (使用您本地已有的 drone/git:latest) clone: depth: 0 image: drone/git:latest - pull: false + pull: false # 禁用镜像拉取 steps: # 自动检测是否存在 Java (pom.xml) - name: java-build - image: maven:3.9-eclipse-temurin + image: registry.cn-beijing.aliyuncs.com/yinzy/maven:3.9-eclipse-temurin-8 pull: false + volumes: + - name: maven-cache + path: /localcache/maven/repository environment: - MAVEN_OPTS: -Dmaven.repo.local=.m2/repository + MAVEN_OPTS: -Dmaven.repo.local=/localcache/maven/repository commands: - # 先创建 .m2 目录 - - mkdir -p ~/.m2 # 动态生成 settings.xml(仅用于 CI) - | cat > ~/.m2/settings.xml << 'EOF' @@ -41,10 +60,51 @@ steps: EOF - - mvn clean verify - - if [ -f pom.xml ]; then mvn clean compile; fi + - mvn -s ~/.m2/settings.xml -DskipTests=true clean package + # 验证 JAR 文件是否生成 + - ls -lah target/*.jar || (echo "JAR file not found!" && exit 1) when: - event: [ push, pull_request ] + path: + include: + - pom.xml + event: [ push, pull_request, tag ] + + - name: docker_build + image: docker:latest + pull: false + volumes: + - name: docker_sock + path: /var/run/docker.sock + commands: + # 验证 JAR 文件存在 + - | + if [ ! -f target/drone-test-1.0.jar ]; then + echo "❌ JAR file not found! Make sure java-build step completed successfully." + ls -la target/ || echo "target directory does not exist" + exit 1 + fi + # 显示构建信息 + - echo "📦 Building Docker image with tag: drone-test:${DRONE_REPO_NAME}" + - echo "📁 JAR file info:" + - ls -lh target/drone-test-1.0.jar + # 构建 Docker 镜像 + - docker build -t drone-test:${DRONE_REPO_NAME} -f Dockerfile . + # 如果存在 DRONE_TAG,同时打 latest 标签 + - | + if [ -n "${DRONE_TAG}" ]; then + docker tag drone-test:${DRONE_REPO_NAME} drone-test:latest + echo "✅ Tagged as drone-test:latest" + fi + - echo "✅ Built Docker image: drone-test:${DRONE_REPO_NAME}" + # 显示镜像信息 + - docker images drone-test + depends_on: + - java-build + when: + path: + include: + - pom.xml + event: [ push, pull_request, tag ] # 自动检测是否存在 Python (requirements.txt) - name: python-test @@ -57,7 +117,8 @@ steps: - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - if [ -f test_example.py ]; then python -m pytest test_example.py -v; fi when: - event: [ push, pull_request ] + branch: + exclude: [ "*" ] # 最终报告(无论成功失败都运行) - name: summary diff --git a/pom.xml b/pom.xml index 3668646..f2ec93c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,16 +7,72 @@ com.example drone-test 1.0 + jar + - 17 - 17 + 8 + 8 + UTF-8 - - - org.junit.jupiter - junit-jupiter - 5.12.2 - test - - + + + + org.junit.jupiter + junit-jupiter + 5.12.2 + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 8 + 8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + com.example.App + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + com.example.App + + + + + + + + \ No newline at end of file From e54b9750aeeb25f39e04e942fd54e6d14de2dd7e Mon Sep 17 00:00:00 2001 From: kale Date: Sun, 7 Dec 2025 21:56:24 -0500 Subject: [PATCH 2/3] =?UTF-8?q?[fix]:[20251208][=E6=9E=84=E5=BB=BAdocker]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4810781 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +# 使用最小的 Java 8 JRE 镜像 +FROM openjdk:8-jre-alpine + +# 设置工作目录 +WORKDIR /app + +# 复制生成的 JAR 文件到容器中(使用通配符匹配) +COPY target/*.jar app.jar + +# 运行应用 +ENTRYPOINT ["java", "-jar", "app.jar"] From b328ad6d07f74961c093a03380a2021d3848b73d Mon Sep 17 00:00:00 2001 From: kale Date: Sun, 7 Dec 2025 22:03:00 -0500 Subject: [PATCH 3/3] =?UTF-8?q?[fix]:[20251208][=E6=9E=84=E5=BB=BAdocker1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 72 +++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/.drone.yml b/.drone.yml index b371f43..267cab1 100644 --- a/.drone.yml +++ b/.drone.yml @@ -69,42 +69,42 @@ steps: - pom.xml event: [ push, pull_request, tag ] - - name: docker_build - image: docker:latest - pull: false - volumes: - - name: docker_sock - path: /var/run/docker.sock - commands: - # 验证 JAR 文件存在 - - | - if [ ! -f target/drone-test-1.0.jar ]; then - echo "❌ JAR file not found! Make sure java-build step completed successfully." - ls -la target/ || echo "target directory does not exist" - exit 1 - fi - # 显示构建信息 - - echo "📦 Building Docker image with tag: drone-test:${DRONE_REPO_NAME}" - - echo "📁 JAR file info:" - - ls -lh target/drone-test-1.0.jar - # 构建 Docker 镜像 - - docker build -t drone-test:${DRONE_REPO_NAME} -f Dockerfile . - # 如果存在 DRONE_TAG,同时打 latest 标签 - - | - if [ -n "${DRONE_TAG}" ]; then - docker tag drone-test:${DRONE_REPO_NAME} drone-test:latest - echo "✅ Tagged as drone-test:latest" - fi - - echo "✅ Built Docker image: drone-test:${DRONE_REPO_NAME}" - # 显示镜像信息 - - docker images drone-test - depends_on: - - java-build - when: - path: - include: - - pom.xml - event: [ push, pull_request, tag ] + # - name: docker_build + # image: docker:latest + # pull: false + # volumes: + # - name: docker_sock + # path: /var/run/docker.sock + # commands: + # # 验证 JAR 文件存在 + # - | + # if [ ! -f target/drone-test-1.0.jar ]; then + # echo "❌ JAR file not found! Make sure java-build step completed successfully." + # ls -la target/ || echo "target directory does not exist" + # exit 1 + # fi + # # 显示构建信息 + # - echo "📦 Building Docker image with tag: drone-test:${DRONE_REPO_NAME}" + # - echo "📁 JAR file info:" + # - ls -lh target/drone-test-1.0.jar + # # 构建 Docker 镜像 + # - docker build -t drone-test:${DRONE_REPO_NAME} -f Dockerfile . + # # 如果存在 DRONE_TAG,同时打 latest 标签 + # - | + # if [ -n "${DRONE_TAG}" ]; then + # docker tag drone-test:${DRONE_REPO_NAME} drone-test:latest + # echo "✅ Tagged as drone-test:latest" + # fi + # - echo "✅ Built Docker image: drone-test:${DRONE_REPO_NAME}" + # # 显示镜像信息 + # - docker images drone-test + # depends_on: + # - java-build + # when: + # path: + # include: + # - pom.xml + # event: [ push, pull_request, tag ] # 自动检测是否存在 Python (requirements.txt) - name: python-test