@@ -208,6 +208,60 @@ jobs:
208208 ./artifacts/*.nupkg
209209 retention-days : 30
210210
211+ # ===== CONTAINERS DRY-RUN BUILD =====
212+ containers-dry-run :
213+ name : Container Build (dry run)
214+ runs-on : ubuntu-latest
215+ needs : build-and-test
216+ # Skip for merge commits to develop/main
217+ if : ${{ !(github.event_name == 'push' && contains(github.event.head_commit.message, 'Merge pull request')) || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }}
218+
219+ steps :
220+ - name : Checkout code
221+ uses : actions/checkout@v4
222+
223+ - name : Set up Docker Buildx
224+ uses : docker/setup-buildx-action@v3
225+
226+ - name : Build hub image (dry run)
227+ uses : docker/build-push-action@v6
228+ with :
229+ context : .
230+ file : ./hub/Dockerfile
231+ push : false
232+ load : true
233+ platforms : linux/amd64
234+ tags : |
235+ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}-hub:dryrun-${{ github.sha }}
236+ cache-from : type=gha,scope=hub
237+ cache-to : type=gha,scope=hub,mode=max
238+
239+ - name : Build worker image (dry run)
240+ uses : docker/build-push-action@v6
241+ with :
242+ context : .
243+ file : ./worker/Dockerfile
244+ push : false
245+ load : true
246+ platforms : linux/amd64
247+ tags : |
248+ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}-worker:dryrun-${{ github.sha }}
249+ cache-from : type=gha,scope=worker
250+ cache-to : type=gha,scope=worker,mode=max
251+
252+ - name : Build dashboard image (dry run)
253+ uses : docker/build-push-action@v6
254+ with :
255+ context : .
256+ file : ./dashboard/Dockerfile
257+ push : false
258+ load : true
259+ platforms : linux/amd64
260+ tags : |
261+ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}-dashboard:dryrun-${{ github.sha }}
262+ cache-from : type=gha,scope=dashboard
263+ cache-to : type=gha,scope=dashboard,mode=max
264+
211265 # ===== DOCUMENTATION (Only for direct pushes to main) =====
212266 documentation :
213267 name : 📚 Documentation
@@ -284,7 +338,7 @@ jobs:
284338 summary :
285339 name : 📊 Build Summary
286340 runs-on : ubuntu-latest
287- needs : [code-formatting, security-scan, build-and-test] # 🔧 Updated dependencies
341+ needs : [code-formatting, security-scan, build-and-test, containers-dry-run ] # 🔧 Updated dependencies
288342 if : always() && (needs.code-formatting.result != 'skipped' || needs.security-scan.result != 'skipped' || needs.build-and-test.result != 'skipped')
289343
290344 steps :
@@ -297,6 +351,7 @@ jobs:
297351 echo "| Code Formatting | ${{ needs.code-formatting.result == 'success' && '✅ Passed' || needs.code-formatting.result == 'skipped' && '⏭️ Skipped' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
298352 echo "| Security Scan | ${{ needs.security-scan.result == 'success' && '✅ Passed' || needs.security-scan.result == 'skipped' && '⏭️ Skipped' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
299353 echo "| Build & Test | ${{ needs.build-and-test.result == 'success' && '✅ Passed' || needs.build-and-test.result == 'skipped' && '⏭️ Skipped' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
354+ echo "| Container Dry-Run | ${{ needs.containers-dry-run.result == 'success' && '✅ Passed' || needs.containers-dry-run.result == 'skipped' && '⏭️ Skipped' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
300355 echo "" >> $GITHUB_STEP_SUMMARY
301356 echo "### 📈 Key Metrics" >> $GITHUB_STEP_SUMMARY
302357 echo "- **Branch**: \`${{ github.ref_name }}\`" >> $GITHUB_STEP_SUMMARY
0 commit comments