ci: run geode tests in a dedicated isolated job

The first cut appended :geode:test to the build-desktop matrix command.
That was wrong twice over: geode is JVM-only, so it ran 3× across the
ubuntu/macos/windows matrix, and — because org.gradle.parallel=true —
its default suite's CPU-heavy throughput benchmarks (a 1M-event mirror
sync, WireReqFloor, NegentropyServerReconcile) ran concurrently with the
timing-sensitive quartz relay-client tests, flaking
NostrClientReqBypassingRelayLimitsTest.denseSecondBeyondCapIsSteppedPastWithoutStalling.

Move :geode:test into its own test-geode job (needs: lint, ubuntu, JVM
21) so it runs once and its benchmark load can't starve another module's
timing assertions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KCdJwdhGtmLZ12ViS56S3k
This commit is contained in:
Claude
2026-07-24 19:37:09 +00:00
parent 0a30231196
commit e8739f5e83
2 changed files with 38 additions and 2 deletions
+37 -1
View File
@@ -87,7 +87,7 @@ jobs:
- name: Test + Build Desktop (gradle) - name: Test + Build Desktop (gradle)
run: | run: |
CMD="./gradlew :quartz:jvmTest :commons:jvmTest :nestsClient:jvmTest :geode:test :cli:test :desktopApp:test :desktopApp:${{ matrix.desktop-task }}" CMD="./gradlew :quartz:jvmTest :commons:jvmTest :nestsClient:jvmTest :cli:test :desktopApp:test :desktopApp:${{ matrix.desktop-task }}"
if [ "${{ runner.os }}" = "Linux" ]; then if [ "${{ runner.os }}" = "Linux" ]; then
xvfb-run --auto-servernum $CMD xvfb-run --auto-servernum $CMD
else else
@@ -110,6 +110,42 @@ jobs:
name: ${{ matrix.desktop-artifact-name }} name: ${{ matrix.desktop-artifact-name }}
path: ${{ matrix.desktop-artifact-path }} path: ${{ matrix.desktop-artifact-path }}
# geode (the standalone Nostr relay) is JVM-only, so it runs in its own job
# rather than the build-desktop matrix — one runner suffices (no reason to test
# a platform-independent module 3× across the desktop OS matrix). Isolating it
# also keeps its default suite's CPU-heavy throughput benchmarks (a 1M-event
# mirror sync, WireReqFloor, NegentropyServerReconcile) from contending with the
# timing-sensitive quartz relay-client tests under org.gradle.parallel — that
# contention flakes tests like NostrClientReqBypassingRelayLimitsTest.
test-geode:
needs: lint
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 21
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v6
with:
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
- name: Test geode (gradle)
run: ./gradlew :geode:test
- name: Upload geode Test Reports
uses: actions/upload-artifact@v7
if: failure()
with:
name: geode Test Reports
path: geode/build/reports
test-quartz-ios: test-quartz-ios:
# Phase 1 of the iOS support plan # Phase 1 of the iOS support plan
# (amethyst/plans/2026-05-24-ios-support.md): keep :quartz green on iOS # (amethyst/plans/2026-05-24-ios-support.md): keep :quartz green on iOS
+1 -1
View File
@@ -45,7 +45,7 @@ Two simplifications vs. the CLI:
| Asset naming (`geode-<ver>-<fam>-<arch>`) | `scripts/asset-name.sh` | | Asset naming (`geode-<ver>-<fam>-<arch>`) | `scripts/asset-name.sh` |
| Release matrix + GHCR push | `.github/workflows/create-release.yml` (`build-geode`, `docker-geode`) | | Release matrix + GHCR push | `.github/workflows/create-release.yml` (`build-geode`, `docker-geode`) |
| Homebrew formula auto-sync | `.github/workflows/bump-homebrew-geode-formula.yml` | | Homebrew formula auto-sync | `.github/workflows/bump-homebrew-geode-formula.yml` |
| geode tests in CI | `.github/workflows/build.yml` (`:geode:test`) | | geode tests in CI (dedicated `test-geode` job) | `.github/workflows/build.yml` |
| Operator docs | `geode/README.md` | | Operator docs | `geode/README.md` |
## Distribution channels ## Distribution channels