scan-build-example/cloudbuild.yaml (36 lines of code) (raw):
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# [START cloudbuild_scan_build_buildfile]
steps:
- id: build and inspect
name: gcr.io/cloud-builders/docker
entrypoint: /bin/bash
args:
- -c
- |
docker build -t $_IMAGE_NAME -f ./Dockerfile .
docker image inspect $_IMAGE_NAME --format \
'{{index .RepoTags 0}}@{{.Id}}' > /workspace/image-digest.txt
cat image-digest.txt
- id: scan
name: gcr.io/cloud-builders/gcloud
entrypoint: /bin/bash
args:
- -c
- |
gcloud artifacts docker images scan $_IMAGE_NAME \
--format='value(response.scan)' > /workspace/scan_id.txt
- id: severity check
name: gcr.io/cloud-builders/gcloud
entrypoint: /bin/bash
args:
- -c
- | # Check the vulnerabilities and exit if it meets severity level
gcloud artifacts docker images list-vulnerabilities \
$(cat /workspace/scan_id.txt) --format='value(vulnerability.effectiveSeverity)' \
| if grep -Fxq $_SEVERITY
then echo 'Failed vulnerability check'
exit 1
fi
options:
dynamic_substitutions: true
substitutions:
_IMAGE_NAME: us-central1-docker.pkg.dev/${PROJECT_ID}/ods-build-repo/ods-test:latest
# Store the image in artifact registry
images: [$_IMAGE_NAME]
# [END cloudbuild_scan_build_buildfile]