[hermes] bstein-dev-home #531: sonarqube_js_analysis_missing_nodejs #27

Open
opened 2026-09-16 09:51:06 +00:00 by hermes-automation · 0 comments

Hermes auto-triage classified incident bstein-dev-home/531 as sonarqube_js_analysis_missing_nodejs (confidence 0.6); first failed gate: Enforce quality gate.

Why a human is needed

Build 531 failed at the 'Enforce quality gate' stage. The earliest error in the console is from the SonarQube scanner: while trying to analyze JavaScript/TypeScript it ran 'node -v' and got 'No such file or directory' -- Node.js isn't present wherever the scan executed. That breaks the JS/TS sensor and is the most likely reason the quality gate step didn't complete cleanly. Separately, later in the same build, backend Python tests all passed (128/128), but a frontend Playwright test ('shows Brad's professional homepage and opens the platform diagram overlay') timed out after 60s waiting for a 'Brad Stein' heading to appear -- that's a real, distinct issue worth its own look, but it happened in a later stage and isn't what triggered the first failure. Fixing the quality-gate failure means making Node.js available wherever the SonarQube scan runs: use or build a scanner image/agent pod that includes Node.js, add an explicit Node.js setup step ahead of the scan, or point sonar.javascript.node.executable at a Node binary already provisioned elsewhere in the pipeline. Once the scanner stops erroring, it's worth re-checking whether the quality gate's actual conditions (coverage, new issues, etc.) pass on their own merits, since that couldn't be verified while the JS sensor was failing outright.

Ariadne did not authorize automated remediation: classification_not_supported: 'sonarqube_js_analysis_missing_nodejs'.

Facts

  • jenkins — Build 531's first reported failed stage was 'Enforce quality gate'. (jenkins.first_failed_stage)
  • jenkins — The earliest failure region in the console shows the SonarQube scanner's JavaScript sensor erroring because it could not run 'node -v': NodeCommandException 'Is Node.js available during analysis?', caused by java.io.IOException: Cannot run program "node": error=2, No such file or directory. (console_failures[0] and console_failures[1], lines 332 and 368)
  • jenkins — No structured test failures were published for this build (jenkins.failed_tests is empty). (jenkins.failed_tests)
  • jenkins — Backend Python tests all passed: '128 passed in 14.71s'. (console_failures[2], line ~693)
  • jenkins — A Playwright frontend end-to-end test failed on a 60s timeout waiting for a 'Brad Stein' heading to become visible, in testing/frontend/e2e/home.spec.js:76. (console_failures[3], line 901)
  • jenkins — The 'Build & push backend' stage was skipped due to earlier failure(s), and the build's post-action script exited with code 1, ending in overall result FAILURE. (jenkins.console_tail)
  • opensearch — No supplementary application/service log evidence was available for this incident window because the OpenSearch query failed with 'Connection refused'. (log_evidence.error)

Evidence

The earliest failure region of the build console:

09:33:37.027 INFO  Sensor JaCoCo XML Report Importer [jacoco] (done) | time=11ms
09:33:37.028 INFO  Sensor IaC CloudFormation Sensor [iac]
09:33:37.414 INFO  0 source files to be analyzed
09:33:37.586 INFO  0/0 source files have been analyzed
09:33:37.587 INFO  Sensor IaC CloudFormation Sensor [iac] (done) | time=559ms
09:33:37.588 INFO  Sensor IaC Kubernetes Sensor [iac]
09:33:37.742 INFO  0 source files to be analyzed
09:33:37.987 INFO  0/0 source files have been analyzed
09:33:37.987 INFO  Sensor IaC Kubernetes Sensor [iac] (done) | time=399ms
09:33:37.988 INFO  Sensor JavaScript analysis [javascript]
09:33:52.101 ERROR Error when running: 'node -v'. Is Node.js available during analysis?
org.sonarsource.nodejs.NodeCommandException: Error when running: 'node -v'. Is Node.js available during analysis?
	at org.sonarsource.nodejs.NodeCommand.start(NodeCommand.java:79)
	at org.sonarsource.nodejs.NodeCommandBuilderImpl.getVersion(NodeCommandBuilderImpl.java:203)
	at org.sonarsource.nodejs.NodeCommandBuilderImpl.checkNodeCompatibility(NodeCommandBuilderImpl.java:169)
	at org.sonarsource.nodejs.NodeCommandBuilderImpl.build(NodeCommandBuilderImpl.java:143)
	at org.sonar.plugins.javascrip
... (truncated; the full log is in the linked build)

Inferences

  • The SonarQube analysis step almost certainly ran without Node.js on its PATH, since the scanner explicitly failed trying to invoke 'node -v'; this is the earliest error in the build and lines up with 'Enforce quality gate' being the first stage Jenkins recorded as failed, making it the most likel...
  • The Playwright timeout on the 'Brad Stein' heading looks like a genuine, separate problem with the frontend under test (the page isn't rendering that heading in time), but it happened in a later stage ('Frontend tests') and isn't what caused the first enforced failure in this build.
  • Once Node.js is available to the scanner, it's worth confirming the SonarQube quality gate actually passes on its own conditions (coverage, new issues, duplications, etc.), since the missing-Node.js error may be masking whether the code itself meets the gate's thresholds.

Suggested remediation (not available)

No automated remediation exists for this failure. Hermes proposes one; it was not performed, and Ariadne cannot perform it until a person builds and deploys it.

  • Proposed action: ensure_nodejs_for_sonar_scan
  • What it would do: Make sure the CI agent/container running the SonarQube scan step has a Node.js binary on PATH before sonar-scanner starts -- either use an agent image with Node.js preinstalled, add an explicit Node.js setup step ahead of the scan, or set sonar.javascript.node.executable to a Node binary already provisioned in the pipeline.
  • Evidence that should be required first: The same NodeCommandException ('node -v' / 'No such file or directory') recurring across multiple builds on the same agent/pod template, confirming it's an environment gap rather than a one-off.

Filed automatically by Ariadne from a Hermes Agent diagnosis (run run_e6f6c9c5655948ed8dac72f47a2f43e4). Hermes has no write access to this repository; no files or infrastructure were changed.

Hermes auto-triage classified incident `bstein-dev-home/531` as **sonarqube_js_analysis_missing_nodejs** (confidence 0.6); first failed gate: `Enforce quality gate`. ## Why a human is needed Build 531 failed at the 'Enforce quality gate' stage. The earliest error in the console is from the SonarQube scanner: while trying to analyze JavaScript/TypeScript it ran 'node -v' and got 'No such file or directory' -- Node.js isn't present wherever the scan executed. That breaks the JS/TS sensor and is the most likely reason the quality gate step didn't complete cleanly. Separately, later in the same build, backend Python tests all passed (128/128), but a frontend Playwright test ('shows Brad's professional homepage and opens the platform diagram overlay') timed out after 60s waiting for a 'Brad Stein' heading to appear -- that's a real, distinct issue worth its own look, but it happened in a later stage and isn't what triggered the first failure. Fixing the quality-gate failure means making Node.js available wherever the SonarQube scan runs: use or build a scanner image/agent pod that includes Node.js, add an explicit Node.js setup step ahead of the scan, or point sonar.javascript.node.executable at a Node binary already provisioned elsewhere in the pipeline. Once the scanner stops erroring, it's worth re-checking whether the quality gate's actual conditions (coverage, new issues, etc.) pass on their own merits, since that couldn't be verified while the JS sensor was failing outright. Ariadne did not authorize automated remediation: `classification_not_supported: 'sonarqube_js_analysis_missing_nodejs'`. ## Facts - **jenkins** — Build 531's first reported failed stage was 'Enforce quality gate'. (`jenkins.first_failed_stage`) - **jenkins** — The earliest failure region in the console shows the SonarQube scanner's JavaScript sensor erroring because it could not run 'node -v': NodeCommandException 'Is Node.js available during analysis?', caused by java.io.IOException: Cannot run program "node": error=2, No such file or directory. (`console_failures[0] and console_failures[1], lines 332 and 368`) - **jenkins** — No structured test failures were published for this build (jenkins.failed_tests is empty). (`jenkins.failed_tests`) - **jenkins** — Backend Python tests all passed: '128 passed in 14.71s'. (`console_failures[2], line ~693`) - **jenkins** — A Playwright frontend end-to-end test failed on a 60s timeout waiting for a 'Brad Stein' heading to become visible, in testing/frontend/e2e/home.spec.js:76. (`console_failures[3], line 901`) - **jenkins** — The 'Build & push backend' stage was skipped due to earlier failure(s), and the build's post-action script exited with code 1, ending in overall result FAILURE. (`jenkins.console_tail`) - **opensearch** — No supplementary application/service log evidence was available for this incident window because the OpenSearch query failed with 'Connection refused'. (`log_evidence.error`) ## Evidence The earliest failure region of the build console: ``` 09:33:37.027 INFO Sensor JaCoCo XML Report Importer [jacoco] (done) | time=11ms 09:33:37.028 INFO Sensor IaC CloudFormation Sensor [iac] 09:33:37.414 INFO 0 source files to be analyzed 09:33:37.586 INFO 0/0 source files have been analyzed 09:33:37.587 INFO Sensor IaC CloudFormation Sensor [iac] (done) | time=559ms 09:33:37.588 INFO Sensor IaC Kubernetes Sensor [iac] 09:33:37.742 INFO 0 source files to be analyzed 09:33:37.987 INFO 0/0 source files have been analyzed 09:33:37.987 INFO Sensor IaC Kubernetes Sensor [iac] (done) | time=399ms 09:33:37.988 INFO Sensor JavaScript analysis [javascript] 09:33:52.101 ERROR Error when running: 'node -v'. Is Node.js available during analysis? org.sonarsource.nodejs.NodeCommandException: Error when running: 'node -v'. Is Node.js available during analysis? at org.sonarsource.nodejs.NodeCommand.start(NodeCommand.java:79) at org.sonarsource.nodejs.NodeCommandBuilderImpl.getVersion(NodeCommandBuilderImpl.java:203) at org.sonarsource.nodejs.NodeCommandBuilderImpl.checkNodeCompatibility(NodeCommandBuilderImpl.java:169) at org.sonarsource.nodejs.NodeCommandBuilderImpl.build(NodeCommandBuilderImpl.java:143) at org.sonar.plugins.javascrip ... (truncated; the full log is in the linked build) ``` ## Inferences - The SonarQube analysis step almost certainly ran without Node.js on its PATH, since the scanner explicitly failed trying to invoke 'node -v'; this is the earliest error in the build and lines up with 'Enforce quality gate' being the first stage Jenkins recorded as failed, making it the most likel... - The Playwright timeout on the 'Brad Stein' heading looks like a genuine, separate problem with the frontend under test (the page isn't rendering that heading in time), but it happened in a later stage ('Frontend tests') and isn't what caused the first enforced failure in this build. - Once Node.js is available to the scanner, it's worth confirming the SonarQube quality gate actually passes on its own conditions (coverage, new issues, duplications, etc.), since the missing-Node.js error may be masking whether the code itself meets the gate's thresholds. ## Suggested remediation (not available) No automated remediation exists for this failure. Hermes proposes one; it was not performed, and Ariadne cannot perform it until a person builds and deploys it. - Proposed action: `ensure_nodejs_for_sonar_scan` - What it would do: Make sure the CI agent/container running the SonarQube scan step has a Node.js binary on PATH before sonar-scanner starts -- either use an agent image with Node.js preinstalled, add an explicit Node.js setup step ahead of the scan, or set sonar.javascript.node.executable to a Node binary already provisioned in the pipeline. - Evidence that should be required first: The same NodeCommandException ('node -v' / 'No such file or directory') recurring across multiple builds on the same agent/pod template, confirming it's an environment gap rather than a one-off. ## Links - Failed build: https://ci.bstein.dev/job/bstein-dev-home/531/ - Full evidence bundle and audit trail live in Ariadne at `/api/admin/audit/events`, event types `hermes_autotriage_incident` and `hermes_autotriage_diagnosis`. Filed automatically by Ariadne from a Hermes Agent diagnosis (run [run_e6f6c9c5655948ed8dac72f47a2f43e4](https://triage.bstein.dev/chat?resume=run_e6f6c9c5655948ed8dac72f47a2f43e4)). Hermes has no write access to this repository; no files or infrastructure were changed. <!-- hermes-triage job=bstein-dev-home classification=sonarqube_js_analysis_missing_nodejs incident=bstein-dev-home/531 -->
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bstein/bstein-dev-home#27
No description provided.