7878
7979 cd $(Build.SourcesDirectory)/deployment/arc-k8s-extension/ServiceGroupRoot/Scripts
8080 tar -czvf ../artifacts.tar.gz ../../../../charts/azuremonitor-containers/ pushChartToAcr.sh
81-
81+
8282 cd $(Build.SourcesDirectory)/deployment/arc-k8s-extension-release-v2/ServiceGroupRoot/Scripts
8383 tar -czvf ../artifacts.tar.gz arcExtensionRelease.sh
8484
9595
9696 - task : CredScan@3
9797 displayName : " SDL : Run credscan"
98-
98+
9999 - task : CopyFiles@2
100100 displayName : " Copy ev2 deployment artifacts"
101101 inputs :
@@ -140,7 +140,7 @@ jobs:
140140 inputs :
141141 pathToPublish : ' $(Build.ArtifactStagingDirectory)'
142142 artifactName : drop
143-
143+
144144 - task : Armory@2
145145 displayName : ' Run ARMory'
146146 inputs :
@@ -175,6 +175,7 @@ jobs:
175175
176176 sudo apt-get update && sudo apt-get -y install qemu binfmt-support qemu-user-static
177177 docker system prune --all -f
178+ docker images -q --filter "dangling=true" | xargs docker rmi
178179 docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
179180
180181 docker buildx create --name testbuilder
@@ -185,6 +186,11 @@ jobs:
185186 az account set -s ${{ variables.subscription }}
186187 az acr login -n ${{ variables.containerRegistry }}
187188
189+ # NOTE: Using the prometheus-collector team's cached buildx image since moby/buildkit:buildx-stable-1 getting throttled
190+ docker pull mcr.microsoft.com/azuremonitor/containerinsights/cidev/prometheus-collector/images:buildx-stable-1
191+ docker buildx create --name dockerbuilder --driver docker-container --driver-opt image=mcr.microsoft.com/azuremonitor/containerinsights/cidev/prometheus-collector/images:buildx-stable-1 --use
192+ docker buildx inspect --bootstrap
193+
188194 if [ "$(Build.Reason)" != "PullRequest" ]; then
189195 docker buildx build --platform $(BUILD_PLATFORMS) --tag ${{ variables.repoImageName }}:$(linuxImagetag) -f kubernetes/linux/Dockerfile.multiarch --metadata-file $(Build.ArtifactStagingDirectory)/linux/metadata.json --build-arg IMAGE_TAG=$(linuxTelemetryTag) --build-arg GOLANG_BASE_IMAGE=$(GOLANG_BASE_IMAGE) --build-arg CI_BASE_IMAGE=$(CI_BASE_IMAGE) --push --provenance=false .
190196
@@ -274,8 +280,54 @@ jobs:
274280 scriptLocation : inlineScript
275281 inlineScript : |
276282 curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
283+ PRIMARY_TRIVY_DB_REPOSITORY="ghcr.io/aquasecurity/trivy-db"
284+ SECONDARY_TRIVY_DB_REPOSITORY="public.ecr.aws/aquasecurity/trivy-db"
285+ PRIMARY_TRIVY_JAVA_DB_REPOSITORY="ghcr.io/aquasecurity/trivy-java-db"
286+ SECONDARY_TRIVY_JAVA_DB_REPOSITORY="public.ecr.aws/aquasecurity/trivy-java-db"
287+
288+ # Set initial repositories to primary
289+ export TRIVY_DB_REPOSITORY=$PRIMARY_TRIVY_DB_REPOSITORY
290+ export TRIVY_JAVA_DB_REPOSITORY=$PRIMARY_TRIVY_JAVA_DB_REPOSITORY
291+
292+ # Function to run Trivy scan and handle output
293+ run_trivy_scan() {
294+ trivy image --ignore-unfixed --no-progress --severity HIGH,CRITICAL,MEDIUM "${{ variables.repoImageName }}:$(linuxImagetag)" > trivy_output.log 2>&1
295+ return $?
296+ }
277297
278- trivy image --ignore-unfixed --no-progress --severity HIGH,CRITICAL,MEDIUM --exit-code 1 ${{ variables.repoImageName }}:$(linuxImagetag)
298+ # Attempt scan up to 5 times with repository fallback
299+ for i in {1..5}; do
300+ echo "Running Trivy scan attempt $i..."
301+
302+ # Run the Trivy scan and capture exit code
303+ run_trivy_scan
304+ TRIVY_EXIT_CODE=$?
305+
306+ # Check if scan was successful
307+ if [ $TRIVY_EXIT_CODE -eq 0 ]; then
308+ echo "Trivy scan succeeded."
309+ cat trivy_output.log
310+ break
311+ fi
312+
313+ # If the first attempt fails, switch to secondary repositories
314+ if [ $i -eq 1 ]; then
315+ echo "Primary repositories failed with an error. Switching to secondary repositories."
316+ export TRIVY_DB_REPOSITORY=$SECONDARY_TRIVY_DB_REPOSITORY
317+ export TRIVY_JAVA_DB_REPOSITORY=$SECONDARY_TRIVY_JAVA_DB_REPOSITORY
318+ fi
319+
320+ # Log and wait before retrying if an error occurred
321+ echo "Error: Trivy scan attempt $i failed. Retrying... ($i/5)"
322+ cat trivy_output.log
323+ sleep 5 # Wait 5 seconds before retrying
324+ done
325+
326+ # Final check: if still failing after 5 attempts, exit with error
327+ if [ $TRIVY_EXIT_CODE -ne 0 ]; then
328+ echo "Error: Trivy scan failed after 5 retries."
329+ exit 1
330+ fi
279331
280332 # Find in cache or download a specific version of Go and add it to the PATH.
281333 - task : GoTool@0
@@ -287,7 +339,7 @@ jobs:
287339 ls
288340 make
289341 displayName: 'Execute Makefile for Linux Build'
290-
342+
291343 - task : CodeQL3000Finalize@0
292344 condition : eq(variables.IS_MAIN_BRANCH, true)
293345
@@ -355,6 +407,7 @@ jobs:
355407 azureSubscription : ${{ variables.armServiceConnectionName }}
356408 scriptType : ps
357409 scriptLocation : inlineScript
410+ retryCountOnTaskFailure : 2
358411 inlineScript : |
359412 mkdir -p $(Build.ArtifactStagingDirectory)/windows
360413 cd kubernetes/windows
@@ -398,7 +451,7 @@ jobs:
398451
399452 echo "Extract fluent-bit"
400453 docker cp signingContainer:C:\opt\fluent-bit .
401-
454+
402455 echo "Extract Ruby"
403456 docker cp signingContainer:C:\ruby31 .
404457
@@ -525,7 +578,7 @@ jobs:
525578 targetType : ' inline'
526579 script : |
527580 docker create --name pushContainer ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2019BaseImageVersion)-unsigned
528-
581+
529582 echo "Copy Signed binaries/folders back to docker image..."
530583 docker cp $(Build.ArtifactStagingDirectory)/fpSigning/CertificateGenerator.exe pushContainer:C:\opt\amalogswindows\certgenerator\CertificateGenerator.exe
531584 docker cp $(Build.ArtifactStagingDirectory)/fpSigning/CertificateGenerator.dll pushContainer:C:\opt\amalogswindows\certgenerator\CertificateGenerator.dll
@@ -588,6 +641,7 @@ jobs:
588641 azureSubscription : ${{ variables.armServiceConnectionName }}
589642 scriptType : ps
590643 scriptLocation : inlineScript
644+ retryCountOnTaskFailure : 2
591645 inlineScript : |
592646 mkdir -p $(Build.ArtifactStagingDirectory)/windows
593647 cd kubernetes/windows
@@ -631,7 +685,7 @@ jobs:
631685
632686 echo "Extract fluent-bit"
633687 docker cp signingContainer:C:\opt\fluent-bit .
634-
688+
635689 echo "Extract Ruby"
636690 docker cp signingContainer:C:\ruby31 .
637691
@@ -758,7 +812,7 @@ jobs:
758812 targetType : ' inline'
759813 script : |
760814 docker create --name pushContainer ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2022BaseImageVersion)-unsigned
761-
815+
762816 echo "Copy Signed binaries/folders back to docker image..."
763817 docker cp $(Build.ArtifactStagingDirectory)/fpSigning/CertificateGenerator.exe pushContainer:C:\opt\amalogswindows\certgenerator\CertificateGenerator.exe
764818 docker cp $(Build.ArtifactStagingDirectory)/fpSigning/CertificateGenerator.dll pushContainer:C:\opt\amalogswindows\certgenerator\CertificateGenerator.dll
@@ -907,7 +961,7 @@ jobs:
907961 inputs :
908962 pathToPublish : ' $(Build.ArtifactStagingDirectory)'
909963 artifactName : drop
910-
964+
911965 - task : AntiMalware@4
912966 displayName : ' Run MpCmdRun.exe'
913967 inputs :
0 commit comments