fix(ci): replace placeholder qa/security teams with real ones in sop-tier-check (#2139) #2232

Merged
devops-engineer merged 4 commits from fix/2139-sop-tier-check-real-qa-security-teams into main 2026-06-06 20:08:25 +00:00
2 changed files with 6 additions and 10 deletions
+4 -8
View File
@@ -144,18 +144,14 @@ debug "tier=$TIER"
# as unachievable (would always fail) — operators notice the clear error
# and create the missing team.
#
# Current Gitea teams: ceo, engineers, managers
# Future teams (create before removing "???" fallback): qa, security, security-audit
# Current Gitea teams: ceo, engineers, managers, qa, security
declare -A TIER_EXPR=(
# tier:low — same as previous OR gate: any engineer, manager, or ceo.
["tier:low"]="engineers,managers,ceo"
# tier:medium — AND of (managers) AND (engineers) AND (qa???,security???)
# The qa+security clause requires both teams to exist; when not yet
# created, the PR author is responsible for adding them before requesting
# approval on a tier:medium PR. Ops: create qa + security Gitea teams
# and update this map to remove the "???" markers (internal#189 follow-up).
["tier:medium"]="managers AND engineers AND qa???,security???"
# tier:medium — AND of (managers) AND (engineers) AND (qa,security)
# ≥1 approver from managers AND ≥1 from engineers AND ≥1 from qa OR security.
["tier:medium"]="managers AND engineers AND qa,security"
# tier:high — ceo only. The AND-composition adds no value for a
# single-team gate, but the framework is wired for consistency.
@@ -57,12 +57,12 @@ echo "test: tier:low OR-clause splits to 3 tokens"
assert_eq "tier:low" "engineers|managers|ceo" "$(split_clause "engineers,managers,ceo")"
echo "test: tier:medium AND-expression — bash word-split on \$EXPR yields 5 tokens"
EXPR="managers AND engineers AND qa???,security???"
EXPR="managers AND engineers AND qa,security"
out=""
for _raw in $EXPR; do
out="${out}${out:+ ; }$(split_clause "$_raw")"
done
assert_eq "tier:medium" "managers ; AND ; engineers ; AND ; qa???|security???" "$out"
assert_eq "tier:medium" "managers ; AND ; engineers ; AND ; qa|security" "$out"
echo "test: tier:high single-team OR-clause"
assert_eq "tier:high" "ceo" "$(split_clause "ceo")"