S390x- Docker image to run sonar-scanner on linux

Must-share information (formatted with Markdown):

  • which versions are you using (SonarQube Server / Community Build, Scanner, Plugin, and any relevant extension)
  • how is SonarQube deployed: zip
  • what are you trying to achieve : Trying to build a docker image of linux based sonar-scanner(cli) to run in CI pipeline hosted on S390x architecture
  • what have you tried so far to achieve this : I have tried to build the image but not able to generate
FROM alpine:3.19 AS builder

ARG SONAR_SCANNER_HOME=/opt/sonar-scanner

ARG SONAR_SCANNER_VERSION='6.0.0.4432'

RUN mkdir ${SONAR_SCANNER_HOME} -p

RUN cd /opt/sonar-scanner

WORKDIR /opt/sonar-scanner/sonar-scanner-6.0.0.4432-linux

RUN pwd

RUN apk update && apk add zip

RUN mkdir /downloads/sonarqube -p \

&& cd /downloads/sonarqube \

&& wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-6.0.0.4432-linux.zip \

&& unzip sonar-scanner-cli-6.0.0.4432-linux.zip \

&& rm sonar-scanner-cli-6.0.0.4432-linux.zip \

# && mv sonar-scanner.properties /opt/sonar-scanner/conf/sonar-scannr.properties \

&& mv sonar-scanner-${SONAR_SCANNER_VERSION}-linux ${SONAR_SCANNER_HOME} \

&& pwd \

# && mkdir /opt/sonar-scanner/sonar-scanner-6.0.0.4432-linux/jre

RUN pwd

WORKDIR /opt/sonar-scanner/sonar-scanner-6.0.0.4432-linux/jre

RUN ln -s /opt/sonar-scanner/sonar-scanner-${SONAR_SCANNER_VERSION}-linux/bin/sonar-scanner /usr/local/bin/sonar-scanner \

&& echo 'export PATH="$PATH:/opt/sonar-scanner/sonar-scanner-${SONAR_SCANNER_VERSION}-linux/bin"' >> ~/.bashrc \

&& source ~/.bashrc

CMD ["sonar-scanner -v"]


What happens? You get a specific error? Something else?

@Colin I am getting below error
10:36:37.388 DEBUG Sensors : XML Sensor -> JaCoCo XML Report Importer -> IaC CloudFormation Sensor -> IaC Kubernetes Sensor -> IaC AzureResourceManager Sensor -> Java Config Sensor -> JavaScript inside YAML analysis -> CSS Rules -> IaC Docker Sensor -> Serverless configuration file sensor -> AWS SAM template file sensor -> AWS SAM Inline template file sensor -> EnterpriseSecretsSensor -> TextAndSecretsSensor -> JavaSecuritySensor -> CSharpSecuritySensor -> PhpSecuritySensor -> PythonSecuritySensor -> JsSecuritySensor
10:36:37.388 INFO Sensor XML Sensor [xml]
10:36:37.392 INFO 1 source file to be analyzed
10:36:37.393 DEBUG 'whitesource.config' generated metadata with charset 'UTF-8'
10:36:37.435 INFO 1/1 source file has been analyzed
10:36:37.436 INFO Sensor XML Sensor [xml] (done) | time=48ms
10:36:37.436 INFO Sensor JaCoCo XML Report Importer [jacoco]
10:36:37.436 INFO 'sonar.coverage.jacoco.xmlReportPaths' is not defined. Using default locations: target/site/jacoco/jacoco.xml,target/site/jacoco-it/jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml
10:36:37.436 INFO No report imported, no coverage information will be imported by JaCoCo XML Report Importer
10:36:37.436 INFO Sensor JaCoCo XML Report Importer [jacoco] (done) | time=1ms
10:36:37.437 INFO Sensor IaC CloudFormation Sensor [iac]
10:36:37.438 DEBUG 'detect-secrets-report.json' generated metadata with charset 'UTF-8'
10:36:37.438 DEBUG File without identifier 'AWSTemplateFormatVersion': detect-secrets-report.json
10:36:37.438 DEBUG 'renovate.json' generated metadata with charset 'UTF-8'
10:36:37.438 DEBUG File without identifier 'AWSTemplateFormatVersion': renovate.json
10:36:37.439 DEBUG 'agent.yaml' generated metadata with charset 'UTF-8'
10:36:37.439 DEBUG File without identifier 'AWSTemplateFormatVersion': agent.yaml
10:36:37.444 INFO 0 source files to be analyzed
10:36:37.444 INFO 0/0 source files have been analyzed
10:36:37.444 INFO Sensor IaC CloudFormation Sensor [iac] (done) | time=7ms
10:36:37.444 INFO Sensor IaC Kubernetes Sensor [iac]
10:36:37.451 INFO EXECUTION FAILURE
10:36:37.451 INFO Total time: 54.137s
10:36:37.451 ERROR Error during SonarScanner CLI execution
java.lang.IllegalStateException: Unsupported architecture: s390x
at org.sonar.iac.helm.utils.OperatingSystemUtils.getNormalizedArchName(OperatingSystemUtils.java:64)
at org.sonar.iac.helm.utils.OperatingSystemUtils.getCurrentPlatformIfSupported(OperatingSystemUtils.java:36)
at org.sonar.iac.kubernetes.plugin.HelmProcessor.isHelmEvaluatorExecutableAvailable(HelmProcessor.java:53)
at org.sonar.iac.kubernetes.plugin.KubernetesSensor.shouldEnableHelmAnalysis(KubernetesSensor.java:187)
at org.sonar.iac.kubernetes.plugin.KubernetesSensor.initContext(KubernetesSensor.java:91)
at org.sonar.iac.common.extension.IacSensor.execute(IacSensor.java:93)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:204)
at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:200)
at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:173)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.scanner.bootstrap.SpringScannerContainer.doAfterStart(SpringScannerContainer.java:351)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:144)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
at org.sonarsource.scanner.lib.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:41)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:586)
at org.sonarsource.scanner.lib.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:62)
at jdk.proxy3/jdk.proxy3.$Proxy2.execute(Unknown Source)
at org.sonarsource.scanner.lib.InProcessScannerEngineFacade.doAnalyze(InProcessScannerEngineFacade.java:39)
at org.sonarsource.scanner.lib.ScannerEngineFacade.analyze(ScannerEngineFacade.java:61)
at org.sonarsource.scanner.cli.Main.analyze(Main.java:77)
at org.sonarsource.scanner.cli.Main.main(Main.java:63)
10:36:37.454 DEBUG Cleanup org.eclipse.jgit.util.FS$FileStoreAttributes$Lambda/0x0000000095c85398@8b683f41 during JVM shutdown (edited)

Monday, December 9th

Thanks.

In SONARIAC-1279 we made sure this didn’t crash the analysis (simply make it clear that Kubernetes files won’t be analyzed). This fix made it into SonarQube v10.4. You should upgrade to the latest version, or otherwise disable Kubernetes analysis in this project.