sonar-scanner-cli-4.2 找不到 jre/bin/java

sonar-scanner-cli-4.2 does not find jre/bin/java

我正尝试在 jenkins 的 docker 容器上 运行 sonnarqube 扫描器。我使用下图:

FROM node:16-alpine

我从这里安装 java

RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community

我从这里安装 sonnarqube scanner

RUN wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873.zip

当 运行扫描扫描仪时,出现以下错误:

22:33:55 sonar-scanner-4.2.0.1873-linux/bin/sonar-scanner: exec: line 64: /e2e/sonar-scanner-4.2.0.1873-linux/jre/bin/java: not found

我检查了 java 路径:

22:33:49 Step 39/44 : RUN which java
22:33:49  ---> Running in 47df6c73c0b7
22:33:50 /usr/bin/java

并将其附加到我的 PATH env 变量(也是 sonnarqube 可执行文件):

22:50:57 /usr/bin/java/bin:/sonar-scanner-4.2.0.1873/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

docs 中,他们说他们为 linux 分发提供了一个 JRE。

但是如果我检查 sonnarqube 文件夹,我只看到:

22:50:39 drwxr-xr-x    5 root     root          4096 Nov 25 21:50 .
22:50:39 drwxr-xr-x    1 root     root          4096 Nov 25 21:50 ..
22:50:39 drwxr-xr-x    2 root     root          4096 Nov 25 21:50 bin
22:50:39 drwxr-xr-x    2 root     root          4096 Nov 25 21:50 conf
22:50:39 drwxr-xr-x    2 root     root          4096 Nov 25 21:50 lib

没有sonar-scanner-4.2.0.1873/jre/java/bin

jre 应该在 sonar-scanner-4.2.0.1873 文件夹中吗?我的 PATH env var 错了吗?我不明白为什么找不到 java。

在 alpine 上安装 openJDK 11+ 存在问题。 Alpine Linux 对其 libc 使用 musl-libc,而 Linux 的大多数其他版本使用 glibc,GNU 的 C 库。标准 Linux 软件是基于非 Alpine 风格构建的,例如 ubuntu 和 centos,因此通常与 glibc 相关联,因此无法使用 Alpine 成功执行,因为 libc 不是链接到 java 安装。唯一的解决方法是安装一个 glibc 兼容层,这并不简单,或者使用 alpine-openjdk11 容器(你可能无法使用它们,因为它们不是官方图像,因此在可维护性方面存在问题)

尝试使用 debian (ubuntu) 或 fedora (centos) 发行版,看看是否可以运行