Skip to content

Fix CI for WPILib 2027 alpha toolchain#14

Open
nlaverdure wants to merge 15 commits into
main-2027-alpha2from
ci/2027-alpha2-toolchain
Open

Fix CI for WPILib 2027 alpha toolchain#14
nlaverdure wants to merge 15 commits into
main-2027-alpha2from
ci/2027-alpha2-toolchain

Conversation

@nlaverdure

@nlaverdure nlaverdure commented Jun 11, 2026

Copy link
Copy Markdown
Member

Summary

  • Splits CI into two separate workflows:
    • build-systemcore: cross-compiles for SystemCore using wpilib/systemcore-cross-ubuntu-minimal:2027-24.04
    • build-simulation: compiles for host x86_64 simulation using actions/setup-java (Temurin 21)
  • Bumps actions/checkout from v4 → v5 for Node.js 24 compatibility (forced switch June 16, 2026)

🤖 Generated with Claude Code

nlaverdure and others added 15 commits June 11, 2026 12:05
Switch build.yml to wpilib/roborio-cross-ubuntu:2027_alpha5-22.04
(JDK 25) and add required safe.directory git config step. Bump
spotless.yml from JDK 17 to JDK 21 — required by google-java-format
1.28.0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
google-java-format 1.28.0 supports JDK 17; the JDK 25 issue was
only with the default bundled version. Spotless CI was passing on 17.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
actions/checkout and actions/setup-java v4 use Node.js 20, which is
removed from runners on September 16, 2026 (forced switch June 16).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
wpilib/roborio-cross-ubuntu has no 2027 alpha image. Since this branch
is sim-only (no roboRIO deployment), drop the container and use
Temurin JDK 21, which satisfies the minimum required by ReduxLib 2027.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
WPILib 2027 JNI libs require GLIBCXX_3.4.31 (GCC 13+), which ships
with Ubuntu 24.04. Ubuntu 22.04 only provides up to 3.4.30.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the bare ubuntu-24.04 runner + setup-java step with the
WPILib-provided cross-build container, which bundles the 2027 toolchain.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Since the job runs inside wpilib/systemcore-cross-ubuntu, the host runner
version is irrelevant — ubuntu-latest is sufficient.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rename build.yml → build-systemcore.yml; switch to minimal container
- Add build-simulation.yml using actions/setup-java for host-platform sim build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The sim runs indefinitely; timeout 30 kills it after startup and
treat exit code 124 (timeout) as success.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…radle cache

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
JVM ignores SIGPIPE so the pipe trick alone doesn't terminate it.
Run Gradle in background, detect startup via tail+grep, then kill
the entire process group.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
setsid gives Gradle its own session/pgid so kill -- -$GRADLE_PID
only terminates the sim, not the shell.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.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.

1 participant