Drone 无法编译 Maven 测试 类

Drone can't compile Maven test classes

我有 Drone 的本地实例 运行 并且正在尝试构建几个非常简单的 Maven 项目。它们完全正常并遵循所有约定。

我正在使用最新的 Drone docker 图像(截至今天),并在 Rancher 环境中设置了代理和服务器。本地 Gogs 实例是 Git 存储库。

当 Drone 运行构建时,Maven 无法编译测试 类,因为它找不到编译源 类。它发生在两个不同的项目上,使用以下方法编译没有问题:

只有 Drone 构建失败了。我很难过。有人有什么想法吗?

这是.drone.yml

pipeline:
  build:
    image: maven:3.5.0-alpine
    commands:
      - mvn -B clean package

这是一些示例输出:

[INFO] Compiling 8 source files to /drone/src/192.168.1.116:10080/timw/springboot-docker-clean/compare/458b3364de013c475723da83162368bacf6ba239...fd89653daf594250d11f8cba004939b7a95199f6/target/classes
109s
836
[INFO] 
110s
837
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ springboot-docker-clean ---
110s
838
[INFO] Using 'UTF-8' encoding to copy filtered resources.
110s
839
[INFO] skip non existing resourceDirectory /drone/src/192.168.1.116:10080/timw/springboot-docker-clean/compare/458b3364de013c475723da83162368bacf6ba239...fd89653daf594250d11f8cba004939b7a95199f6/src/test/resources
110s
840
[INFO] 
110s
841
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ springboot-docker-clean ---
110s
842
[INFO] Changes detected - recompiling the module!
110s
843
[INFO] Compiling 7 source files to /drone/src/192.168.1.116:10080/timw/springboot-docker-clean/compare/458b3364de013c475723da83162368bacf6ba239...fd89653daf594250d11f8cba004939b7a95199f6/target/test-classes
110s
844
[INFO] -------------------------------------------------------------
112s
845
[ERROR] COMPILATION ERROR : 
112s
846
[INFO] -------------------------------------------------------------
112s
847
[ERROR] /drone/src/192.168.1.116:10080/timw/springboot-docker-clean/compare/458b3364de013c475723da83162368bacf6ba239...fd89653daf594250d11f8cba004939b7a95199f6/src/test/java/org/timw/docker/DockerJavaClientTest.java:[31,13] cannot find symbol
112s
848
  symbol:   class DockerJavaClient
112s
849
  location: class org.timw.docker.DockerJavaClientTest

问题是 drone 在工作区路径中使用了您的存储库 url。在您的示例中,存储库 url 包含端口名称(冒号),这似乎在 Maven 尝试读取文件时引起问题。

/drone/src/192.168.1.116:10080

您可以使用以下语法手动覆盖 yaml 中的工作区路径:

workspace:
  path: src/timw/springboot-docker-clean

pipeline:
  build:
    image: maven:3.5.0-alpine
    commands:
      - mvn -B clean package