#!/usr/bin/env bash # verify-admin-web-docker.sh — Validation structurelle de la feature # "Pipeline CI/CD Docker pour admin-web (build + push registry)". # # Encode TOUS les critères d'acceptation structurels issus du planner : # - existence + contenu des fichiers créés par la feature # - validité YAML / JSON # - patterns de sécurité (secrets, login password-stdin, pas de GITEA_TOKEN…) # - actions pinnées par SHA # - garde anti-[skip ci] sur chaque job # - contextes git (branche feat/admin-web-docker + commit feat:) # # Usage : # ./scripts/verify-admin-web-docker.sh # run complet # ./scripts/verify-admin-web-docker.sh --summary # run + total final uniquement # # Exit : 0 si 0 échec, 1 si ≥1 échec. # Idempotent / ré-entrant : lancé avant implé (tout rouge) ET après (tout vert). set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" SUMMARY_ONLY=0 [[ "${1:-}" == "--summary" ]] && SUMMARY_ONLY=1 PASS_COUNT=0 FAIL_COUNT=0 declare -a FAIL_NAMES=() # --- helpers -------------------------------------------------------- # pass() { # name PASS_COUNT=$((PASS_COUNT + 1)) if [[ "$SUMMARY_ONLY" -eq 0 ]]; then printf '[PASS] %s\n' "$1" fi } fail() { # name [detail...] FAIL_COUNT=$((FAIL_COUNT + 1)) FAIL_NAMES+=("$1 :: ${2:-}") if [[ "$SUMMARY_ONLY" -eq 0 ]]; then printf '[FAIL] %s' "$1" [[ $# -ge 2 ]] && printf ' — %s' "${@:2}" printf '\n' fi } # file_contains