mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
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:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user