ci: mount audit workspace safely
This commit is contained in:
@@ -139,13 +139,53 @@ if [[ "$BUILD_ONLY" == "1" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ "$SCOPE" == "govoplan" ]]; then
|
||||
declare -a WORKSPACE_MOUNT=()
|
||||
if [[ "${GITEA_ACTIONS:-}" == "true" ]]; then
|
||||
ACTIONS_CONTAINER_ID="$(hostname)"
|
||||
if ! ACTIONS_MOUNTS_JSON="$(
|
||||
"${DOCKER_CLI[@]}" container inspect \
|
||||
--format '{{json .Mounts}}' \
|
||||
"$ACTIONS_CONTAINER_ID"
|
||||
)"; then
|
||||
echo "Gitea Actions is using a host Docker daemon, but the current job container could not be resolved." >&2
|
||||
echo "Cannot safely share the checked-out workspace with the audit container." >&2
|
||||
exit 1
|
||||
fi
|
||||
if command -v python3 >/dev/null 2>&1; then
|
||||
MOUNT_PYTHON=python3
|
||||
elif command -v python >/dev/null 2>&1; then
|
||||
MOUNT_PYTHON=python
|
||||
else
|
||||
echo "Python is required to validate the Gitea Actions workspace mount." >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! ACTIONS_WORKSPACE_MOUNT="$(
|
||||
printf '%s' "$ACTIONS_MOUNTS_JSON" \
|
||||
| "$MOUNT_PYTHON" "$ROOT/tools/checks/security-audit/resolve_workspace_mount.py" \
|
||||
--root "$ROOT" \
|
||||
--scope "$SCOPE" \
|
||||
--reports-dir "$REPORTS_DIR"
|
||||
)"; then
|
||||
echo "Cannot safely share the Gitea Actions workspace with the audit container." >&2
|
||||
exit 1
|
||||
fi
|
||||
WORKSPACE_MOUNT=(--mount "$ACTIONS_WORKSPACE_MOUNT")
|
||||
MOUNT_ROOT="$(dirname "$ROOT")"
|
||||
WORKDIR="$ROOT"
|
||||
if [[ "$SCOPE" == "govoplan" ]]; then
|
||||
EXTRA_ENV=(-e "GOVOPLAN_REPOS_ROOT=$MOUNT_ROOT")
|
||||
else
|
||||
EXTRA_ENV=()
|
||||
fi
|
||||
elif [[ "$SCOPE" == "govoplan" ]]; then
|
||||
MOUNT_ROOT="$(dirname "$ROOT")"
|
||||
WORKDIR="/workspace/$(basename "$ROOT")"
|
||||
WORKSPACE_MOUNT=(-v "$MOUNT_ROOT:/workspace")
|
||||
EXTRA_ENV=(-e "GOVOPLAN_REPOS_ROOT=/workspace")
|
||||
else
|
||||
MOUNT_ROOT="$ROOT"
|
||||
WORKDIR="/workspace"
|
||||
WORKSPACE_MOUNT=(-v "$MOUNT_ROOT:/workspace")
|
||||
EXTRA_ENV=()
|
||||
fi
|
||||
|
||||
@@ -159,7 +199,7 @@ fi
|
||||
-e SECURITY_AUDIT_REQUIRE_TOOLS="${SECURITY_AUDIT_REQUIRE_TOOLS:-0}" \
|
||||
-e SECURITY_AUDIT_TOOLBOX_FINGERPRINT="$IMAGE_FINGERPRINT" \
|
||||
"${EXTRA_ENV[@]}" \
|
||||
-v "$MOUNT_ROOT:/workspace" \
|
||||
"${WORKSPACE_MOUNT[@]}" \
|
||||
-w "$WORKDIR" \
|
||||
"$FINGERPRINT_IMAGE" \
|
||||
bash tools/checks/check-security-audit.sh --mode "$MODE" --scope "$SCOPE" --reports-dir "$REPORTS_DIR" "${SCRIPT_ARGS[@]}"
|
||||
|
||||
Reference in New Issue
Block a user