Skip to content

fix(ci): make vcan0 unavailability a loud warning, not a silent notice - #70

Open
SoundMatt wants to merge 1 commit into
mainfrom
fix/vcan0-loud-skip
Open

fix(ci): make vcan0 unavailability a loud warning, not a silent notice#70
SoundMatt wants to merge 1 commit into
mainfrom
fix/vcan0-loud-skip

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

What

`test-socketcan` and `can-interop` have skipped their real workload on every recent CI run because `vcan0` setup fails on GitHub-hosted runners — over 1000 lines of real wire-protocol code have never executed in CI despite the jobs reporting green.

Root cause (confirmed)

Ran a throwaway diagnostic branch/PR (#67, closed without merging) that removed the `2>/dev/null` suppression on `modprobe`. The actual error:

```
modprobe: FATAL: Module vcan not found in directory /lib/modules/6.17.0-1020-azure
```

The `vcan` kernel module is genuinely absent from the GitHub-hosted `ubuntu-latest` runner image's kernel — this is not a permissions, capability, or command-ordering issue that `sudo`/flags can work around. It cannot be fixed from within the workflow. A real fix would require a self-hosted runner with a vcan-capable kernel, which is a much larger infrastructure change out of scope for this fix.

Fix

Since the underlying environment gap is genuinely infeasible to fix from CI, make the skip itself loud instead of leaving it invisible:

  • Replace the easy-to-miss `::notice::` annotation with a `::warning::` annotation (renders more prominently in the PR checks / annotations UI).
  • Add a `$GITHUB_STEP_SUMMARY` banner on both jobs explaining exactly why and what it means — visible immediately on the run summary page, not just by expanding raw logs.
  • Expanded both jobs' header comments in `ci.yml` with the confirmed root cause for future readers.

A green check on either job now cannot be silently mistaken for "the socketcan/interop code actually ran" — anyone glancing at the run summary or annotations sees the warning immediately.

Testing

`go build ./...` / `go vet ./...` pass (workflow-only change). YAML validated with `python3 -c "import yaml; yaml.safe_load(...)"`. The warning/summary behavior itself was verified live via the diagnostic PR #67's actual run.

Closes #56

test-socketcan and can-interop have skipped their real workload on
every recent CI run because vcan0 setup fails on GitHub-hosted
runners — confirmed root cause via a throwaway diagnostic run:
"modprobe: FATAL: Module vcan not found in directory
/lib/modules/<runner kernel>". The vcan kernel module is genuinely
absent from the GitHub-hosted ubuntu-latest runner image; this is
not a sudo/capability/ordering issue modprobe flags can work around,
and cannot be fixed from within the workflow. A real fix would
require a self-hosted runner with a vcan-capable kernel, which is out
of scope here.

Since the underlying environment gap is infeasible to fix from CI,
make the skip itself loud instead of leaving it invisible: replace
the `::notice::` (easy to miss) with a `::warning::` annotation plus
a `$GITHUB_STEP_SUMMARY` banner explaining exactly why and what it
means, so "this job is green" is never silently mistaken for "the
socketcan/interop code path actually ran". Expanded both jobs' header
comments with the confirmed root cause for future readers.

Closes #56

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test-socketcan / can-interop CI jobs silently skip on every run (vcan0 setup fails on GitHub-hosted runners)

1 participant