Files
MobilityOps/scripts/scan-ci-image.sh
T
NuklearRabbit 2918608240
MobilityOps acceptance / backend (pull_request) Failing after 2m20s
MobilityOps acceptance / frontend (pull_request) Successful in 1m24s
MobilityOps acceptance / e2e (pull_request) Skipped
Managed validation / full (pull_request) Canceled after 0s
fix(ci): isolate contract and image scans from host paths
2026-08-29 00:27:17 +02:00

30 lines
997 B
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TARGET_IMAGE="${1:?usage: scan-ci-image.sh <image>}"
TRIVY_IMAGE="aquasec/trivy@sha256:be1190afcb28352bfddc4ddeb71470835d16462af68d310f9f4bca710961a41e"
SAFE_NAME="$(printf '%s' "$TARGET_IMAGE" | tr -cs 'A-Za-z0-9._-' '-')"
ARCHIVE_RELATIVE="artifacts/.${SAFE_NAME}.tar"
ARCHIVE="$ROOT/$ARCHIVE_RELATIVE"
trap 'rm -f "$ARCHIVE"' EXIT
mkdir -p "$ROOT/artifacts"
docker image inspect "$TARGET_IMAGE" >/dev/null
docker save --output "$ARCHIVE" "$TARGET_IMAGE"
WORKSPACE_ARGS=(-v "$ROOT:/workspace:ro")
CONTAINER_ARCHIVE="/workspace/$ARCHIVE_RELATIVE"
if docker inspect "${HOSTNAME:-}" >/dev/null 2>&1; then
WORKSPACE_ARGS=(--volumes-from "$HOSTNAME")
CONTAINER_ARCHIVE="$ROOT/$ARCHIVE_RELATIVE"
fi
docker run --rm "${WORKSPACE_ARGS[@]}" "$TRIVY_IMAGE" image \
--input "$CONTAINER_ARCHIVE" \
--scanners vuln \
--severity HIGH,CRITICAL \
--ignore-unfixed \
--exit-code 1 \
--format table