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

  1. Install Go (e.g. via the official tarball or distro package) and confirm 'go version' works in the same shell that runs test-all.
  2. If dashboard coverage is irrelevant in that environment, accept the skip -- the suite passes without it.
  3. 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

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.