|
72 | 72 |
|
73 | 73 | runs-on: |
74 | 74 | labels: blacksmith-32vcpu-ubuntu-2204 |
| 75 | + timeout-minutes: 180 |
75 | 76 |
|
76 | 77 | permissions: |
77 | 78 | contents: read |
|
88 | 89 | SELECT_FILE: '' |
89 | 90 |
|
90 | 91 | steps: |
| 92 | + - name: Record build start time |
| 93 | + run: | |
| 94 | + echo "BUILD_START=$(date +%s)" >> "$GITHUB_ENV" |
| 95 | + echo "Build started at $(date -u)" |
| 96 | +
|
91 | 97 | - name: Determine checkout ref |
92 | 98 | id: checkout-ref |
93 | 99 | run: | |
@@ -134,6 +140,35 @@ jobs: |
134 | 140 | run: | |
135 | 141 | make build |
136 | 142 |
|
| 143 | + - name: "Preflight: prune cache and verify BuildKit disk" |
| 144 | + run: | |
| 145 | + set -euo pipefail |
| 146 | + KEEP_GB=60 |
| 147 | + echo "Pruning BuildKit cache (target max-storage ${KEEP_GB} GiB, no filters)..." |
| 148 | + if ! docker buildx prune --all --force --max-storage ${KEEP_GB}g; then |
| 149 | + docker buildx prune --all --force --keep-storage ${KEEP_GB}g || true |
| 150 | + fi |
| 151 | +
|
| 152 | + if df -B1 /var/lib/buildkit > /tmp/buildkit_df 2>/dev/null; then |
| 153 | + LINE=$(tail -n1 /tmp/buildkit_df) |
| 154 | + TOTAL=$(echo "$LINE" | awk '{print $2}') |
| 155 | + USED=$(echo "$LINE" | awk '{print $3}') |
| 156 | + FREE=$(echo "$LINE" | awk '{print $4}') |
| 157 | + if [ -n "$TOTAL" ] && [ -n "$FREE" ]; then |
| 158 | + PCT=$(( 100 * USED / TOTAL )) |
| 159 | + echo "BuildKit disk: used ${USED} / ${TOTAL} bytes (${PCT}%); free ${FREE} bytes" |
| 160 | + MIN=$((75 * 1024 * 1024 * 1024)) |
| 161 | + if [ "$FREE" -lt "$MIN" ]; then |
| 162 | + echo "::error::Not enough free space on /var/lib/buildkit (${FREE} bytes free, need >= ${MIN})" |
| 163 | + exit 1 |
| 164 | + fi |
| 165 | + else |
| 166 | + echo "Warning: unable to parse df output for /var/lib/buildkit" |
| 167 | + fi |
| 168 | + else |
| 169 | + echo "Warning: /var/lib/buildkit not found; skipping disk check" |
| 170 | + fi |
| 171 | +
|
137 | 172 | - name: Build and push SWT-Bench images |
138 | 173 | run: | |
139 | 174 | set -euo pipefail |
@@ -181,6 +216,7 @@ jobs: |
181 | 216 | env: |
182 | 217 | DOCKER_BUILDKIT: 1 |
183 | 218 | BUILDKIT_PROGRESS: plain |
| 219 | + BUILDKIT_RESET_ON_FAILURE: 1 |
184 | 220 |
|
185 | 221 | - name: Build prebaked eval env images |
186 | 222 | if: ${{ inputs.build-eval-env == 'true' }} |
@@ -240,6 +276,21 @@ jobs: |
240 | 276 | docker ps -a || true |
241 | 277 | docker system df || true |
242 | 278 |
|
| 279 | + - name: Post-build disk and timing report |
| 280 | + if: always() |
| 281 | + run: | |
| 282 | + set -euo pipefail |
| 283 | + BUILD_END=$(date +%s) |
| 284 | + ELAPSED=$(( BUILD_END - ${BUILD_START:-$BUILD_END} )) |
| 285 | + echo "## Build Timing" >> "$GITHUB_STEP_SUMMARY" |
| 286 | + echo "**Elapsed:** $((ELAPSED / 60))m $((ELAPSED % 60))s" >> "$GITHUB_STEP_SUMMARY" |
| 287 | + echo "" >> "$GITHUB_STEP_SUMMARY" |
| 288 | +
|
| 289 | + echo "## Disk Usage After Build" >> "$GITHUB_STEP_SUMMARY" |
| 290 | + df -h / /var/lib/buildkit 2>/dev/null | tee -a "$GITHUB_STEP_SUMMARY" || true |
| 291 | + echo "" >> "$GITHUB_STEP_SUMMARY" |
| 292 | + docker buildx du --verbose 2>/dev/null | head -40 | tee -a "$GITHUB_STEP_SUMMARY" || true |
| 293 | +
|
243 | 294 | - name: Archive build logs |
244 | 295 | if: always() |
245 | 296 | run: | |
|
0 commit comments