# Run the Compose-packaged CLI P2P smoke benchmark. # # This workflow is intentionally non-required at first. It exercises the local # Compose package for CouchDB + Nostr relay + CLI runner, and uploads the # benchmark JSON results for inspection. name: cli-p2p-compose-smoke on: pull_request: paths: - '.github/workflows/cli-p2p-compose-smoke.yml' - 'package.json' - 'package-lock.json' - 'src/apps/cli/**' - 'test/bench-network/**' workflow_dispatch: inputs: cases: description: 'Comma-separated benchmark cases' required: false default: 'couchdb-baseline,p2p-direct-local' md_files: description: 'Markdown file count' required: false default: '2' bin_files: description: 'Binary file count' required: false default: '1' couchdb_rtt_ms: description: 'Requested CouchDB RTT in milliseconds' required: false default: '20' permissions: contents: read jobs: smoke: runs-on: ubuntu-latest timeout-minutes: 45 steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Show Docker versions run: | docker --version docker compose version - name: Run Compose P2P smoke benchmark env: BENCH_CASES: ${{ inputs.cases || 'couchdb-baseline,p2p-direct-local' }} BENCH_MD_FILE_COUNT: ${{ inputs.md_files || '2' }} BENCH_MD_MIN_SIZE_BYTES: '128' BENCH_MD_MAX_SIZE_BYTES: '256' BENCH_BIN_FILE_COUNT: ${{ inputs.bin_files || '1' }} BENCH_BIN_SIZE_BYTES: '512' BENCH_COUCHDB_RTT_MS: ${{ inputs.couchdb_rtt_ms || '20' }} BENCH_SYNC_TIMEOUT: '180' BENCH_PEERS_TIMEOUT: '20' LIVESYNC_P2P_RELAY_READY_TIMEOUT_MS: '60000' BENCH_LIVESYNC_TEST_TEE: '0' run: docker compose -f test/bench-network/compose.yml run --rm bench-runner - name: Show Compose diagnostics if: failure() run: | docker compose -f test/bench-network/compose.yml ps docker compose -f test/bench-network/compose.yml logs --no-color couchdb nostr-relay - name: Upload benchmark results if: always() uses: actions/upload-artifact@v4 with: name: cli-p2p-compose-smoke-results path: test/bench-network/bench-results/** if-no-files-found: warn - name: Stop Compose services if: always() run: docker compose -f test/bench-network/compose.yml down -v --remove-orphans