Viele Unternehmen nutzen in ihrem internen Netz Self-Signed Certificates und möchten den SonarQube-Server auch damit unter Windows hosten – die Einbindung in den Buildprozess von Azure DevOps bzw. TFS kann jedoch zunächst frustrierend sein. In diesem Blog erfahren Sie die Lösung dazu.
SonarQube ist ein Tool zur Continuous Inspection von Source Code. Es hilft beim Aufspüren von Bugs, Code Smells, Code Coverage und Vulnerabilities in modernen gängigen Programmiersprachen, womit es eine wichtige Komponente in einer Continuous Integration Toolchain wie Azure DevOps bzw. TFS ist.
Wie im Blog von Rob Bos korrekt erfasst, scheitert die Einbindung von SonarQube in den TFS mit einem Self-Signed Certificate zunächst an dem individuellen Zertifikatmanagement von Node.js. Dieses arbeitet Zwecks Plattformunabhängigkeit noch nicht mit dem Zertifikatsmanagement von Windows. Da die Kommunikation mit SonarQube in den einzelnen Build-Schritten über Node.js erfolgt, muss das Self-Signed Certificate auch dessen Zertifikatmanagement beigefügt werden.
Die Fehlermeldung
Benutzen Sie ein Self-Signed Certificate und erhalten folgende Fehlermeldung, dann liegt es mit hoher Wahrscheinlichkeit am individuellen Zertifikatmanagement von Node.js.
2018-06-22T13:47:12.0391750Z ##[section]Starting: Prepare analysis on SonarQube 2018-06-22T13:47:12.0860183Z ============================================================================== 2018-06-22T13:47:12.0860183Z Task : Prepare Analysis Configuration 2018-06-22T13:47:12.0860183Z Description : Prepare SonarQube analysis configuration 2018-06-22T13:47:12.0860183Z Version : 4.3.0 2018-06-22T13:47:12.0860183Z Author : sonarsource 2018-06-22T13:47:12.0860183Z Help : [More Information](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) 2018-06-22T13:47:12.0860183Z ============================================================================== 2018-06-22T13:47:20.9293520Z ##[error][SQ] API GET '/api/server/version' failed, error was: {"code":"UNABLE_TO_GET_ISSUER_CERT_LOCALLY"} 2018-06-22T13:47:20.9293520Z ##[section]Finishing: Prepare analysis on SonarQube
Die Lösung
Das Problem ist mit fünf einfachen Schritten gelöst:
- Zunächst exportiert man das Self-Signed Certificate aus dem Windows Certificate Manager (als Base-64 encoded X.509).
- Dann legt man die exportierte Datei in ein Verzeichnis des Build-Agents mit der Datei-Endung .pem.
Bspw.: C:\agent\node-ca\localhost.pem - Dem Build-Agent muss nun die Umgebungsvariable NODE_EXTRA_CA_CERTS beigefügt werden, welche auf die zuvor genannte Datei zeigt.
- Anschließend startet man den Service das Build-Agents neu.
- Die Umgebungsvariable ist nun in den Eigenschaften des Build-Agents sichtbar.
Schließlich sollten die Analyse-Build-Schritte von SonarQube in dieser Hinsicht nun korrekt funktionieren und der Source Code wird pro Build inspiziert.
Wir wünschen viel Erfolg und freuen uns über Ihre Anregungen.