Parallelize docker_ci

This commit is contained in:
Jack Kingsman
2026-03-12 19:53:10 -07:00
parent 2710cafb21
commit df538b3aaf

View File

@@ -22,8 +22,6 @@ run_combo() {
local npm_version="$2"
local image="node:${node_version}-slim"
echo -e "${YELLOW}=== Node ${node_version} / npm ${npm_version} ===${NC}"
docker run --rm \
-v "$SCRIPT_DIR:/src:ro" \
-w /tmp \
@@ -39,14 +37,54 @@ run_combo() {
npm run build
"
echo -e "${GREEN}Passed:${NC} Node ${node_version} / npm ${npm_version}"
echo
}
TMP_DIR="$(mktemp -d)"
declare -a JOB_PIDS=()
declare -a JOB_LABELS=()
declare -a JOB_LOGS=()
cleanup() {
rm -rf "$TMP_DIR"
}
trap cleanup EXIT
for node_version in "${NODE_VERSIONS[@]}"; do
for npm_version in "${NPM_VERSIONS[@]}"; do
run_combo "$node_version" "$npm_version"
label="Node ${node_version} / npm ${npm_version}"
log_file="$TMP_DIR/node-${node_version}-npm-${npm_version}.log"
echo -e "${BLUE}Starting:${NC} ${label}"
(
echo -e "${YELLOW}=== ${label} ===${NC}"
run_combo "$node_version" "$npm_version"
) >"$log_file" 2>&1 &
JOB_PIDS+=("$!")
JOB_LABELS+=("$label")
JOB_LOGS+=("$log_file")
done
done
echo
failures=0
for idx in "${!JOB_PIDS[@]}"; do
if wait "${JOB_PIDS[$idx]}"; then
echo -e "${GREEN}Passed:${NC} ${JOB_LABELS[$idx]}"
else
failures=$((failures + 1))
echo -e "${RED}Failed:${NC} ${JOB_LABELS[$idx]}"
echo -e "${YELLOW}--- ${JOB_LABELS[$idx]} log ---${NC}"
cat "${JOB_LOGS[$idx]}"
echo
fi
done
if (( failures > 0 )); then
echo -e "${RED}=== Docker CI matrix failed (${failures} job(s)) ===${NC}"
exit 1
fi
echo -e "${GREEN}=== Docker CI matrix passed ===${NC}"