Compare commits

..

15 Commits

Author SHA1 Message Date
will.anderson d8acb126f5 Fix soul-demo Docker build: --no-cache to avoid corrupted overlay2 layers
Dev — Build & local smoke test / build-smoke (pull_request) Failing after 27s
2026-05-10 10:56:44 -05:00
will.anderson 87ac67a70e Merge pull request 'Selective Docker prune (preserve build cache) + k3s retry' (#39) from fix/stage-source-check into dev
Dev — Build & local smoke test / build-smoke (push) Successful in 4m10s
2026-05-10 02:22:08 +00:00
will.anderson f838e0c8a7 Selective Docker prune to preserve build cache; retry k3s download
Dev — Build & local smoke test / build-smoke (pull_request) Successful in 4m2s
2026-05-09 21:21:52 -05:00
will.anderson e520ba98ca Merge pull request 'Make docker prune non-fatal (concurrent prune race)' (#38) from fix/stage-source-check into dev
Dev — Build & local smoke test / build-smoke (push) Failing after 14m45s
2026-05-10 01:57:30 +00:00
will.anderson 21ecbca2e6 Make docker prune non-fatal to handle concurrent prune from parallel CI jobs
Dev — Build & local smoke test / build-smoke (pull_request) Failing after 15m15s
2026-05-09 20:57:14 -05:00
will.anderson 38c92e5fc7 Merge pull request 'Fix CI disk exhaustion: docker system prune at job start' (#37) from fix/stage-source-check into dev
Dev — Build & local smoke test / build-smoke (push) Failing after 24s
2026-05-10 01:55:41 +00:00
will.anderson cee0328db5 Add docker system prune at job start to prevent disk exhaustion
Dev — Build & local smoke test / build-smoke (pull_request) Failing after 17m6s
2026-05-09 20:55:24 -05:00
will.anderson bbfc7cebf7 Merge pull request 'Move soul-demo build after JS compile in stage pipeline' (#36) from fix/stage-source-check into dev
Dev — Build & local smoke test / build-smoke (push) Failing after 3m13s
2026-05-10 01:50:17 +00:00
will.anderson 4a710ff294 Move soul-demo build after JS compile to prevent Docker memory pressure on elc
Dev — Build & local smoke test / build-smoke (pull_request) Successful in 3m7s
2026-05-09 20:50:01 -05:00
will.anderson f1b5e1bac8 Merge pull request 'Add diagnostics to stage JS compile step' (#34) from fix/stage-source-check into dev
Dev — Build & local smoke test / build-smoke (push) Successful in 4m48s
2026-05-10 01:27:20 +00:00
will.anderson b4438fec43 Add diagnostics to stage JS compile step to expose silent failure
Dev — Build & local smoke test / build-smoke (pull_request) Successful in 2m21s
2026-05-09 20:27:05 -05:00
will.anderson aa040d1412 Merge pull request 'Fix soul-demo compile: add -I runtime/ include path' (#32) from fix/stage-source-check into dev
Dev — Build & local smoke test / build-smoke (push) Successful in 4m5s
2026-05-10 01:02:36 +00:00
will.anderson d5820c43b0 Fix soul-demo compile: add -I runtime/ for el_runtime.h include path
Dev — Build & local smoke test / build-smoke (pull_request) Successful in 1m42s
2026-05-09 20:02:22 -05:00
will.anderson a1144605f3 Merge pull request 'Build soul-demo image tar before Docker build in stage' (#30) from fix/stage-source-check into dev
Dev — Build & local smoke test / build-smoke (push) Successful in 4m28s
2026-05-10 00:53:48 +00:00
will.anderson 43949b20a0 Build soul-demo image tar before Docker build in stage
Dev — Build & local smoke test / build-smoke (pull_request) Failing after 10m38s
Dockerfile.stage COPYs dist/soul-demo-image.tar so k3s can import
soul-demo:local at container startup. Stage CI now compiles soul-demo
from source on the host runner and packages it as an OCI image before
the main Docker build runs.
2026-05-09 19:41:55 -05:00
3 changed files with 54 additions and 2 deletions
+11
View File
@@ -75,6 +75,17 @@ jobs:
if: github.event_name != 'pull_request'
run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet
- name: Prune Docker to reclaim disk
run: |
# Remove stopped containers, dangling images, unused volumes/networks.
# Do NOT prune build cache — that keeps Docker builds fast and under
# the ~26min runner restart window. Selective pruning frees ~4-5GB
# which is enough to prevent overlay2 "no space left on device" errors.
docker container prune -f 2>&1 || true
docker image prune -f 2>&1 || true
docker volume prune -f 2>&1 || true
df -h /
# ── El SDK setup ──────────────────────────────────────────────────────
# Push builds: extract elb + elc + runtime from ci-base (always latest).
# PR builds: use committed bin/elb-linux-amd64 + bin/elc-linux-amd64 + runtime/.
+42 -1
View File
@@ -96,6 +96,17 @@ jobs:
- name: Configure docker auth for Artifact Registry
run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet
- name: Prune Docker to reclaim disk
run: |
# Remove stopped containers, dangling images, unused volumes/networks.
# Do NOT prune build cache — that keeps Docker builds fast and under
# the ~26min runner restart window. Selective pruning frees ~4-5GB
# which is enough to prevent overlay2 "no space left on device" errors.
docker container prune -f 2>&1 || true
docker image prune -f 2>&1 || true
docker volume prune -f 2>&1 || true
df -h /
- name: Compute image tag
id: tag
run: |
@@ -143,18 +154,48 @@ jobs:
if: steps.changetype.outputs.asset_only != 'true'
run: |
set -euo pipefail
echo "ELC=$ELC"
echo "EL_RUNTIME=$EL_RUNTIME"
echo "el_runtime.js: $(ls -lh "$EL_RUNTIME/el_runtime.js" 2>&1)"
cp "$EL_RUNTIME/el_runtime.js" src/js/
mkdir -p dist/js
for f in src/js/*.el; do
[ -f "$f" ] || continue
name=$(basename "$f" .el)
"$ELC" --target=js --bundle --minify --obfuscate "$f" > "dist/js/${name}.js"
echo "Compiling $f..."
"$ELC" --target=js --bundle --minify --obfuscate "$f" > "dist/js/${name}.js" || {
echo "elc FAILED on $f"
exit 1
}
echo " compiled: $f -> dist/js/${name}.js"
done
rm -f src/js/el_runtime.js
# ── Docker build + push ───────────────────────────────────────────────
- name: Build soul-demo image tar
# Dockerfile.stage COPYs dist/soul-demo-image.tar so k3s can import
# soul-demo:local at runtime. We compile soul-demo from source on the
# host runner (ci-base has gcc), build a minimal OCI image, and save it.
# Moved AFTER JS compilation to avoid Docker memory pressure killing elc.
if: steps.changetype.outputs.asset_only != 'true'
run: |
set -euo pipefail
# Compile el_runtime.o and soul-demo on the host runner
cc -O2 -DHAVE_CURL -c runtime/el_runtime.c -I runtime/ -o /tmp/el_runtime.o
cc -O2 -rdynamic -DEL_SOUL_DEMO_BUILD \
-I runtime/ \
-o dist/soul-demo \
dist/soul-demo.c dist/vessel_stubs.c /tmp/el_runtime.o \
-lcurl -lpthread -ldl -lm -lssl -lcrypto
echo "soul-demo compiled: $(ls -lh dist/soul-demo)"
# Package as minimal OCI image for k3s import
# --no-cache: prevents reuse of corrupted overlay2 layers from prior failed runs
docker build --no-cache -f dist/Dockerfile.soul-demo -t soul-demo:local dist/
docker save soul-demo:local -o dist/soul-demo-image.tar
echo "soul-demo-image.tar: $(du -sh dist/soul-demo-image.tar | cut -f1)"
docker rmi soul-demo:local 2>/dev/null || true
- name: Build and tag image
if: steps.changetype.outputs.asset_only != 'true'
run: |
+1 -1
View File
@@ -44,7 +44,7 @@ RUN cc -O2 -rdynamic \
-lcurl -lpthread -ldl -lm -lssl -lcrypto
# ── Download k3s binary ───────────────────────────────────────────────────────
RUN curl -fL https://github.com/k3s-io/k3s/releases/download/v1.32.4%2Bk3s1/k3s -o /usr/local/bin/k3s \
RUN curl -fL --retry 3 --retry-delay 10 https://github.com/k3s-io/k3s/releases/download/v1.32.4%2Bk3s1/k3s -o /usr/local/bin/k3s \
&& chmod +x /usr/local/bin/k3s
# ── Stage 2: runtime image ────────────────────────────────────────────────────