@@ -26,30 +26,62 @@ jobs:
2626 with :
2727 fetch-depth : 0 # Fetch all history for proper diff
2828
29- - name : Check if workers were modified
29+ - name : Check which workers were modified
3030 id : check-workers
3131 run : |
3232 if [ "${{ github.event_name }}" == "pull_request" ]; then
3333 # For PRs, check changed files
3434 CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
3535 echo "Changed files:"
3636 echo "$CHANGED_FILES"
37-
38- if echo "$CHANGED_FILES" | grep -q "^workers/\|^docker-compose.yml"; then
39- echo "workers_modified=true" >> $GITHUB_OUTPUT
40- echo "✅ Workers or docker-compose.yml modified - will build"
41- else
42- echo "workers_modified=false" >> $GITHUB_OUTPUT
43- echo "⏭️ No worker changes detected - skipping build"
44- fi
4537 else
4638 # For direct pushes, check last commit
4739 CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD)
48- if echo "$CHANGED_FILES" | grep -q "^workers/\|^docker-compose.yml"; then
49- echo "workers_modified=true" >> $GITHUB_OUTPUT
50- else
51- echo "workers_modified=false" >> $GITHUB_OUTPUT
52- fi
40+ fi
41+
42+ # Check if docker-compose.yml changed (build all workers)
43+ if echo "$CHANGED_FILES" | grep -q "^docker-compose.yml"; then
44+ echo "workers_to_build=worker-python worker-secrets worker-rust worker-android worker-ossfuzz" >> $GITHUB_OUTPUT
45+ echo "workers_modified=true" >> $GITHUB_OUTPUT
46+ echo "✅ docker-compose.yml modified - building all workers"
47+ exit 0
48+ fi
49+
50+ # Detect which specific workers changed
51+ WORKERS_TO_BUILD=""
52+
53+ if echo "$CHANGED_FILES" | grep -q "^workers/python/"; then
54+ WORKERS_TO_BUILD="$WORKERS_TO_BUILD worker-python"
55+ echo "✅ Python worker modified"
56+ fi
57+
58+ if echo "$CHANGED_FILES" | grep -q "^workers/secrets/"; then
59+ WORKERS_TO_BUILD="$WORKERS_TO_BUILD worker-secrets"
60+ echo "✅ Secrets worker modified"
61+ fi
62+
63+ if echo "$CHANGED_FILES" | grep -q "^workers/rust/"; then
64+ WORKERS_TO_BUILD="$WORKERS_TO_BUILD worker-rust"
65+ echo "✅ Rust worker modified"
66+ fi
67+
68+ if echo "$CHANGED_FILES" | grep -q "^workers/android/"; then
69+ WORKERS_TO_BUILD="$WORKERS_TO_BUILD worker-android"
70+ echo "✅ Android worker modified"
71+ fi
72+
73+ if echo "$CHANGED_FILES" | grep -q "^workers/ossfuzz/"; then
74+ WORKERS_TO_BUILD="$WORKERS_TO_BUILD worker-ossfuzz"
75+ echo "✅ OSS-Fuzz worker modified"
76+ fi
77+
78+ if [ -z "$WORKERS_TO_BUILD" ]; then
79+ echo "workers_modified=false" >> $GITHUB_OUTPUT
80+ echo "⏭️ No worker changes detected - skipping build"
81+ else
82+ echo "workers_to_build=$WORKERS_TO_BUILD" >> $GITHUB_OUTPUT
83+ echo "workers_modified=true" >> $GITHUB_OUTPUT
84+ echo "Building workers:$WORKERS_TO_BUILD"
5385 fi
5486
5587 - name : Set up Docker Buildx
5991 - name : Build worker images
6092 if : steps.check-workers.outputs.workers_modified == 'true'
6193 run : |
62- echo "Building worker Docker images..."
63- docker compose build worker-python worker-secrets worker-rust worker-android worker-ossfuzz --no-cache
94+ WORKERS="${{ steps.check-workers.outputs.workers_to_build }}"
95+ echo "Building worker Docker images: $WORKERS"
96+ docker compose build $WORKERS --no-cache
6497 continue-on-error : false
6598
6699 lint :
0 commit comments