santifer/career-ops · info
Dashboard build skipped — go compiler not in env
Error message
Dashboard build skipped — go compiler not in env
What it means
Section 4 of test-all.mjs builds the Go dashboard (go build -o .). It first probes for the toolchain with execSync('go version'); when that fails -- Go absent from PATH -- the check is skipped with this warning instead of failing the suite. QUICK mode skips the section entirely regardless of toolchain.
Source
Thrown at test-all.mjs:1533
if (typeof installEgressGuard !== 'function') {
fail('archive-posting does not export installEgressGuard');
}
} catch (e) {
fail(`archive-posting egress guard tests crashed: ${e.message}`);
}
// ── 4. DASHBOARD BUILD ──────────────────────────────────────────
if (!QUICK) {
console.log('\n4. Dashboard build');
let hasGo = false;
try {
execSync('go version', { stdio: 'ignore' });
hasGo = true;
} catch {}
if (!hasGo) {
warn('Dashboard build skipped — go compiler not in env');
} else {
const isWindows = process.platform === 'win32';
const dashboardBuildTmp = mkdtempSync(join(tmpdir(), 'career-dashboard-build-'));
const outPath = join(dashboardBuildTmp, isWindows ? 'career-dashboard-test.exe' : 'career-dashboard-test');
const goEnv = { ...process.env };
if (isWindows && !goEnv.GOCACHE) {
goEnv.GOCACHE = join(tmpdir(), 'career-ops-go-build-cache');
}
if (goEnv.GOCACHE) {
try { mkdirSync(goEnv.GOCACHE, { recursive: true }); } catch (e) {}
}
const goBuild = run('go', ['build', '-o', outPath, '.'], {
cwd: join(ROOT, 'dashboard'),
env: goEnv,
stdio: ['pipe', 'pipe', 'pipe'],
timeout: 60000,
});
if (goBuild !== null) {View on GitHub (pinned to 60398d6549)
Solutions
- Install Go (e.g. via the official tarball or distro package) and confirm 'go version' works in the same shell that runs test-all.
- If dashboard coverage is irrelevant in that environment, accept the skip -- the suite passes without it.
- On Windows, set GOCACHE explicitly; the suite pre-creates it when present.
Example fix
# before ⚠️ Dashboard build skipped — go compiler not in env # after $ sudo apt-get install -y golang-go # or download from go.dev/dl $ go version && node test-all.mjs
Defensive patterns
Strategy: validation
Validate before calling
// Skip the section decision up front instead of relying on the probe
import { execSync } from 'node:child_process';
let hasGo = false;
try { execSync('go version', { stdio: 'ignore' }); hasGo = true; } catch {}
if (!hasGo && process.env.CI) console.log('dashboard build not part of this environment — skipping intentionally'); Prevention
- Install golang in CI images where dashboard build coverage matters; pin the version for reproducibility.
- Confirm 'go version' works in the exact shell/env that runs test-all.mjs, not just interactively.
- On Windows set GOCACHE — the suite honors and pre-creates it when present.
When it happens
Trigger: Fresh CI container or minimal environment without golang installed; Go installed but not on PATH for the test process; Windows setups where only GOCACHE handling is special-cased after the probe.
Common situations: Node-only CI images; contributor machines that never touch the dashboard; PATH differences between interactive shells and CI.
Related errors
AI-assisted analysis of santifer/career-ops@60398d6549 (2026-08-20).
Data as JSON: /api/errors/d19b95e840111f05.
Report an issue: GitHub.