@@ -250,6 +250,32 @@ jobs:
250250 - name : Fail if no images have been built
251251 run : if [ $(wc -l < ${{ matrix.distro.name }}-${{ matrix.distro.release }}-container-images) -le 1 ]; then exit 1; fi
252252
253+ - name : Scan built container images
254+ run : src/kayobe-config/tools/scan-images.sh ${{ matrix.distro.name }}-${{ matrix.distro.release }} ${{ steps.write-kolla-tag.outputs.kolla-tag }} ${{ inputs.sbom && '--sbom' }}
255+
256+ - name : Move image scan logs to output artifact
257+ run : mv image-scan-output image-build-logs/image-scan-output
258+
259+ - name : Fail if any images have critical vulnerabilities
260+ run : if [ $(wc -l < image-build-logs/image-scan-output/critical-images.txt) -gt 0 ]; then exit 1; fi
261+ if : ${{ !inputs.push-critical }}
262+
263+ - name : Copy clean images to push-attempt-images list
264+ run : cp image-build-logs/image-scan-output/clean-images.txt image-build-logs/push-attempt-images.txt
265+ if : inputs.push
266+
267+ # NOTE(seunghun1ee): This always appends dirty images with CVEs severity lower than critical.
268+ # This should be reverted when it's decided to filter high level CVEs as well.
269+ - name : Append dirty images to push list
270+ run : |
271+ cat image-build-logs/image-scan-output/high-images.txt >> image-build-logs/push-attempt-images.txt
272+ if : ${{ inputs.push }}
273+
274+ - name : Append images with critical vulnerabilities to push list
275+ run : |
276+ cat image-build-logs/image-scan-output/critical-images.txt >> image-build-logs/push-attempt-images.txt
277+ if : ${{ inputs.push && inputs.push-critical }}
278+
253279 - name : Push images
254280 run : |
255281 touch image-build-logs/push-failed-images.txt
@@ -300,6 +326,10 @@ jobs:
300326 # run: if [ $(wc -l < image-build-logs/image-scan-output/high-images.txt) -gt 0 ]; then cat image-build-logs/image-scan-output/high-images.txt && exit 1; fi
301327 # if: ${{ !inputs.push-critical && !cancelled() }}
302328
329+ - name : Fail when critical vulnerabilities are found
330+ run : if [ $(wc -l < image-build-logs/image-scan-output/critical-images.txt) -gt 0 ]; then cat image-build-logs/image-scan-output/critical-images.txt && exit 1; fi
331+ if : ${{ !inputs.push-critical && !cancelled() }}
332+
303333 - name : Remove locally built images for this run
304334 if : always() && runner.arch == 'ARM64'
305335 run : |
0 commit comments