我有一个 Sonarqube 安装,只能在专用网络中访问。假设 URL 是:sonar.localdomain,我的 Gitlab 位于:git.localdomain。它们都使用自签名 SSL 证书。
当我运行 Gitlab 管道进行 Sonarqube 测试时,我得到以下信息(这是正确的):
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
这就是我的管道的样子:
sonarqube-check:
stage: test
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
GIT_DEPTH: "0"
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- sonar-scanner
我该如何修复它?
提前致谢!
我通过将证书放置在运行者的映像上解决了这个问题(运行者使用 AWS AMI 来启动服务器)。
然后我将 Sonarqube 管道脚本更新为:
sonarqube-check:
stage: test
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
GIT_DEPTH: "0"
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
before_script:
- keytool -import -alias sonar -storepass changeit -noprompt -keystore /usr/lib/jvm/java-17-openjdk/lib/security/cacerts -file /path/to/self-signed-sonarqube-cert.pem
script:
- sonar-scanner
注意:cacerts 路径可能与您不同。搜索 JAVA_HOME 环境变量的设置,然后将其附加到 /lib/security/cacerts