| 1234567891011121314151617181920212223242526272829303132333435 |
- #!/usr/bin/env bash
- # R01-N16 — surface known CVEs in the locked composer dependencies.
- #
- # Runs `composer audit` against composer.lock inside the project's runtime
- # image, so the audit reflects the exact versions the running container
- # has. Intended for periodic operator use (e.g. weekly cron) and as a
- # pre-deploy gate after `git pull`.
- #
- # Exit status mirrors composer's: 0 = clean, non-zero = advisories found
- # (or composer itself errored). Operators can pipe to `mail` / `wall` etc.
- set -euo pipefail
- # Resolve repo root so the script works regardless of cwd.
- SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
- REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." &>/dev/null && pwd)"
- cd "${REPO_ROOT}"
- IMAGE="${SPRINT_PLANER_IMAGE:-sprint_planer_web-app:latest}"
- if ! command -v docker >/dev/null 2>&1; then
- echo "audit.sh: docker is required (composer + the right ext-* set live in the image)" >&2
- exit 2
- fi
- if ! docker image inspect "${IMAGE}" >/dev/null 2>&1; then
- echo "audit.sh: image '${IMAGE}' not found locally — run 'docker compose build' first" >&2
- exit 2
- fi
- exec docker run --rm \
- -v "${REPO_ROOT}:/app" \
- -w /app \
- "${IMAGE}" \
- sh -c "git config --global --add safe.directory /app && composer audit --locked --no-interaction"
|