feat(make): add build-all to pre-build all 28 decky template images

Iterates every template with a Dockerfile, builds decnet/<svc>:latest
with DOCKER_BUILDKIT=1. Supports NO_CACHE=1 and FAIL_FAST=0 flags,
mirrors the style of test-all. Updated help target.
This commit is contained in:
2026-05-20 22:19:40 -04:00
parent a0f10d2c00
commit dee208ad25

View File

@@ -1,5 +1,6 @@
PYTEST := .311/bin/pytest PYTEST := .311/bin/pytest
FAIL_FAST ?= 1 FAIL_FAST ?= 1
NO_CACHE ?= 0
ARGS := ARGS :=
# addopts in pyproject.toml already provides -v -q -x -n 4 --dist load. # addopts in pyproject.toml already provides -v -q -x -n 4 --dist load.
@@ -176,6 +177,42 @@ test-all test:
echo ""; \ echo ""; \
echo "All suites passed." echo "All suites passed."
# ── Decky image pre-build ─────────────────────────────────────────────────────
_DECKY_TEMPLATES := \
conpot cowrie docker_api elasticsearch ftp http https imap k8s ldap \
llmnr mongodb mqtt mssql mysql pop3 postgres rdp redis sip smb smtp \
sniffer snmp ssh telnet tftp vnc
.PHONY: build-all
build-all:
@failed=""; \
for svc in $(_DECKY_TEMPLATES); do \
echo ""; \
echo "══════════════════════════ $$svc ══════════════════════════"; \
_nc=""; \
if [ "$(NO_CACHE)" = "1" ]; then _nc="--no-cache"; fi; \
if DOCKER_BUILDKIT=1 docker build $$_nc \
-t decnet/$$svc:latest \
decnet/templates/$$svc; then \
echo "[BUILT] $$svc"; \
else \
echo "[FAIL] $$svc"; \
failed="$$failed $$svc"; \
if [ "$(FAIL_FAST)" = "1" ]; then \
echo "Stopping at first failure. Use FAIL_FAST=0 to build all."; \
exit 1; \
fi; \
fi; \
done; \
if [ -n "$$failed" ]; then \
echo ""; \
echo "Failed:$$failed"; \
exit 1; \
fi; \
echo ""; \
echo "All decky images built."
.PHONY: help .PHONY: help
help: help:
@echo "Unit suites (xdist, 30s timeout):" @echo "Unit suites (xdist, 30s timeout):"
@@ -217,3 +254,8 @@ help:
@echo " make test-all FAIL_FAST=0 same, report all failures instead of stopping" @echo " make test-all FAIL_FAST=0 same, report all failures instead of stopping"
@echo "" @echo ""
@echo "Passthrough: make test-web ARGS='--lf -s'" @echo "Passthrough: make test-web ARGS='--lf -s'"
@echo ""
@echo "Decky images:"
@echo " make build-all build decnet/<svc>:latest for all 28 decky templates"
@echo " make build-all NO_CACHE=1 same, bypassing Docker layer cache"
@echo " make build-all FAIL_FAST=0 same, continue past failures"