[hermes] soteria #337: sonarqube_analyzer_toolchain_unavailable #21
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hermes auto-triage classified incident
soteria/337as sonarqube_analyzer_toolchain_unavailable (confidence 0.55); first failed gate:sonarqube.Why a human is needed
Build 337 of the soteria job failed in the "Enforce quality gate" stage, and no test failed: the build published no test results, and no compile or test error appears in the retained log. What actually broke is the static-analysis step's own environment. Between 21:04:16 and 21:04:18 the Go analyzer failed to parse all 26 Go files in the repository - every file from cmd/soteria/main.go through the internal/api, internal/config, internal/k8s, internal/longhorn and internal/server packages - each with "Go parser external process returned non-zero exit value: 2". Seconds later, at 21:04:33, the TypeScript analyzer aborted with "Cannot run program "node": error=2, No such file or directory". A uniform parser exit across every file, plus a completely absent
nodebinary, indicates the analysis container lacks working language tooling - most plausibly an analyzer parser binary built for a different CPU architecture than the build agent, and an image with no Node.js installed. With no Go file parsed, the analysis had no view of the service at all, and the pipeline exited 1 and skipped the image build. Fixing this means changing where and how the analysis stage runs, not changing the service: use an image for that stage that ships Node.js and an analyzer whose Go parser is executable on the agent's architecture (or upgrade the analyzer plugin to a release with an arm64 parser), and drop the JavaScript/TypeScript sensor if this repository has no JS/TS to analyze. Two things keep confidence short of certain: the console is truncated between the analyzer errors and the pipeline exit, so the gate's own verdict message is not in evidence and the link from unparsed code to the non-zero exit is reasoned rather than observed; and the log store was unreachable during collection ("opensearch request failed: [Errno 111] Connection refused"), so there is no second source. Confirm by runninguname -m,node -v, and the analyzer's Go parser binary directly inside the image that stage uses.Ariadne did not authorize automated remediation:
human_required.Facts
https://ci.bstein.dev/job/soteria/337/ (jenkins.result, jenkins.timestamps))jenkins.first_failed_stage)jenkins.failed_tests)jenkins.console_failures[0], console line ~308, marker "non-zero exit")jenkins.console_failures[0] and jenkins.console_failures[1], console lines ~308 and ~411)jenkins.console_failures[0] file URIs)jenkins.console_tail and jenkins.console_failures[2], console line ~3357)jenkins.console_truncated)log_evidence.error, log_evidence.records = [])Evidence
The earliest failure region of the build console:
Inferences
nodeexecutable does not exist in the container that runs the scanner. Bo...go testerror appears, and the failure is confined to the analysis step.node -vand the analyzer's Go parser binary withuname -minside the same container image used by this stage; if the parser is a foreign-architecture ELF ornodeis absenTruncated by Ariadne: the diagnosis exceeded the configured issue body limit. The complete evidence bundle is in the Ariadne audit trail.