From e50c6a80fec40aa772edcdb8ad58f1409fd562e4 Mon Sep 17 00:00:00 2001 From: tduhamel42 Date: Fri, 24 Oct 2025 17:06:00 +0200 Subject: [PATCH] ci: support multi-platform Dockerfiles in worker validation Updated worker validation script to accept both: - Single Dockerfile pattern (existing workers) - Multi-platform Dockerfile pattern (Dockerfile.amd64, Dockerfile.arm64, etc.) This enables platform-aware worker architectures like the Android worker which uses different Dockerfiles for x86_64 and ARM64 platforms. --- .github/scripts/validate-workers.sh | 36 +++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/.github/scripts/validate-workers.sh b/.github/scripts/validate-workers.sh index 8170181..6b2c5f6 100755 --- a/.github/scripts/validate-workers.sh +++ b/.github/scripts/validate-workers.sh @@ -47,8 +47,40 @@ for worker in $WORKERS; do continue fi - # Check required files - REQUIRED_FILES=("Dockerfile" "requirements.txt" "worker.py") + # Check Dockerfile (single file or multi-platform pattern) + if [ -f "$WORKER_DIR/Dockerfile" ]; then + # Single Dockerfile + if ! git ls-files --error-unmatch "$WORKER_DIR/Dockerfile" &> /dev/null; then + echo -e "${RED} ❌ File not tracked by git: $WORKER_DIR/Dockerfile${NC}" + echo -e "${YELLOW} Check .gitignore patterns!${NC}" + ERRORS=$((ERRORS + 1)) + else + echo -e "${GREEN} ✓ Dockerfile (tracked)${NC}" + fi + elif compgen -G "$WORKER_DIR/Dockerfile.*" > /dev/null; then + # Multi-platform Dockerfiles (e.g., Dockerfile.amd64, Dockerfile.arm64) + PLATFORM_DOCKERFILES=$(ls "$WORKER_DIR"/Dockerfile.* 2>/dev/null) + DOCKERFILE_FOUND=false + for dockerfile in $PLATFORM_DOCKERFILES; do + if git ls-files --error-unmatch "$dockerfile" &> /dev/null; then + echo -e "${GREEN} ✓ $(basename "$dockerfile") (tracked)${NC}" + DOCKERFILE_FOUND=true + else + echo -e "${RED} ❌ File not tracked by git: $dockerfile${NC}" + ERRORS=$((ERRORS + 1)) + fi + done + if [ "$DOCKERFILE_FOUND" = false ]; then + echo -e "${RED} ❌ No platform-specific Dockerfiles found${NC}" + ERRORS=$((ERRORS + 1)) + fi + else + echo -e "${RED} ❌ Missing Dockerfile or Dockerfile.* files${NC}" + ERRORS=$((ERRORS + 1)) + fi + + # Check other required files + REQUIRED_FILES=("requirements.txt" "worker.py") for file in "${REQUIRED_FILES[@]}"; do FILE_PATH="$WORKER_DIR/$file"