11name : Memory Probe
22
3- # Throwaway diagnostic. Builds only the app.Dockerfile builder stage (the stage
4- # that OOM-killed) on a GitHub-hosted runner across heap ceilings, sampling peak
5- # memory. 8192 is the control: it must fail, or a pass at 4096 proves nothing .
6- # Delete this file and the ci-memtest branch once the number is settled .
3+ # Throwaway diagnostic. Round 1 (heap ceilings 4096/6144/8192 on free ubuntu-latest)
4+ # failed at all three with exit 137 and ~15.9 GB peak — the heap ceiling is not the
5+ # binding constraint. Round 2 confirms the paid 8-core/32 GB runner builds it .
6+ # Delete this file and the ci-memtest branch once confirmed .
77
88on :
99 push :
@@ -14,22 +14,22 @@ permissions:
1414
1515jobs :
1616 probe :
17- name : Build @ ${{ matrix.heap }} MB
18- runs-on : ubuntu-latest
19- timeout-minutes : 45
17+ name : app image @ ${{ matrix.runner }}
18+ runs-on : ${{ matrix.runner }}
19+ timeout-minutes : 60
2020 strategy :
2121 fail-fast : false
2222 matrix :
23- heap : [8192, 6144, 4096 ]
23+ runner : [linux-x64-8-core ]
2424 steps :
2525 - name : Checkout code
2626 uses : actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
2727
2828 - name : Runner specs
2929 run : |
3030 echo "nproc: $(nproc)"
31- free -h
32- echo "MemTotal: $(awk '/MemTotal/{printf "%.2f GiB\n", $2/1048576}' /proc/meminfo)"
31+ awk '/MemTotal/{printf "MemTotal: %.2f GiB\n", $2/1048576}' /proc/meminfo
32+ df -h / | tail -1
3333
3434 - name : Start memory sampler
3535 run : |
@@ -52,19 +52,21 @@ jobs:
5252 target : builder
5353 platforms : linux/amd64
5454 push : false
55- build-args : NEXT_BUILD_HEAP_MB=${{ matrix.heap }}
5655 provenance : false
5756 sbom : false
5857
5958 - name : Report
6059 run : |
6160 kill "${sampler_pid}" 2>/dev/null || true
6261 PEAK=$(sort -n /tmp/mem-samples.log | tail -1)
63- echo "heap_ceiling_mb=${{ matrix.heap }}"
62+ TOTAL=$(awk '/MemTotal/{printf "%d", $2/1024}' /proc/meminfo)
63+ echo "runner=${{ matrix.runner }}"
6464 echo "build_outcome=${{ steps.build.outcome }}"
6565 echo "peak_used_mb=${PEAK}"
66+ echo "total_mb=${TOTAL}"
6667 {
67- echo "| heap MB | outcome | peak used MB |"
68- echo "|---|---|---|"
69- echo "| ${{ matrix.heap }} | ${{ steps.build.outcome }} | ${PEAK} |"
68+ echo "| runner | outcome | peak used MB | total MB |"
69+ echo "|---|---|---|---| "
70+ echo "| ${{ matrix.runner }} | ${{ steps.build.outcome }} | ${PEAK} | ${TOTAL } |"
7071 } >> $GITHUB_STEP_SUMMARY
72+ [ "${{ steps.build.outcome }}" = "success" ] || exit 1
0 commit comments