par*_*sit 6 java continuous-integration continuous-deployment docker sdkman
在我们的 CI/CD 环境中,我们有几个 docker 镜像以及由 sdkman 预装的 java。但有一个小问题,版本号经常变化,我们的 docker 构建由于缺少软件包版本而失败。例如。:
sdk install java 8.0.232-zulu
Stop! java 8.0.232-zulu is not available. Possible causes:
* 8.0.232-zulu is an invalid version
* java binaries are incompatible with Linux64
* java has not been released yet
Run Code Online (Sandbox Code Playgroud)
是否有任何选项可以非交互式安装最新的 java 的特定“风味”和版本?
就像是:
sdk install java 8-zulu-latest
附言。目前,作为(丑陋的)解决方法,我们使用
sdk install java $(sdk list java | grep -e 8\.0\..*-zulu[^fx] | sed -r s/^.*8/8/)
小智 2
一种方法是不依赖 SDKMAN!。
由于您处于 Docker 环境下,因此最好将图像大小保持在最小。
下面是在 alpine 下安装最新 zulu JDK 的示例:
FROM alpine as base
# install zulu jdk
RUN apk --update --no-cache add curl \
&& curl https://cdn.azul.com/public_keys/alpine-signing@azul.com-5d5dc44c.rsa.pub > /etc/apk/keys/alpine-signing@azul.com-5d5dc44c.rsa.pub \
&& echo "https://repos.azul.com/zulu/alpine" >> /etc/apk/repositories \
&& apk --update --no-cache add zulu8-jdk \
&& apk del curl
Run Code Online (Sandbox Code Playgroud)
这将下载产品签名密钥curl,并将zulu alpine 存储库添加到apk 存储库列表中,安装最新的可用zulu8-jdk 并删除curl。
请注意,您还可以替换名称中的 JDK 版本。例如,使用 zulu11-jdk 来安装 JDK 11。
一些有用的祖鲁安装参考: