Saltar a contenido

Azure DevOps — organización del proyecto

Organización

  • Org: https://dev.azure.com/honneprojects/
  • Proyecto: Enterprise-AI-Platform
  • Proceso: Agile
  • Visibilidad: Private

Repos

Repo Uso
Enterprise-AI-Platform (default) Monorepo del MVP

Branches

Branch Política
main Estable / demo — dispara eai-mvp-ci
develop Integración vía PR (no CI push duplicado)
deployment Única rama que hace ACR build / apply / deploy
feature/* Trabajo corto

No promover el mismo commit a main+develop+deployment a la vez (sin parallel jobs satura la cola). Ver devsecops.md.

Boards — Áreas sugeridas

  • Enterprise-AI-Platform\Platform
  • Enterprise-AI-Platform\Finance
  • Enterprise-AI-Platform\HR
  • Enterprise-AI-Platform\Infra
  • Enterprise-AI-Platform\Security

Boards — Épicas (backlog)

Ver docs/backlog.md: E0 Design → E6 Demo/IaC

Pipelines

  • eai-mvp-ci (21) — validate/test + SAST/SCA (azure-pipelines.yml) — trigger: main + PRs
  • eai-terraform-dev (22) — validate + Checkov + plan; apply solo deployment
  • eai-terraform-bootstrap (23) — remote state (manual)
  • eai-finance-api-deploy (24) — Bandit/SCA → SonarQube → ACR → Trivy → deploy → OWASP ZAP — solo deployment
  • eai-finance-web-deploy — npm audit → SonarQube → ACR eai-finance-web → Trivy → ca-eai-finance-web-devsolo deployment
  • eai-mcp-suppliers-deploy — ACR eai-mcp-suppliersca-eai-mcp-sup-devsolo deployment
  • Templates: pipelines/templates/steps-security-*.yml, pipelines/templates/steps-sonarqube.yml
  • SonarQube: service connection sc-sonarqube-eai, variable group eai-sonarqube, projects enterprise-ai-finance-api / enterprise-ai-finance-web (Quality Gate report-first)
  • Docs: terraform-pipeline.md, devsecops.md, mcp-suppliers.md, azure-i2-deploy.md

Build/push de imágenes solo por pipeline (az acr build en Azure), solo desde rama deployment.
No Docker local, no az/Portal para configurar DEV, no poblar SQL a mano (seed en startup de la API).

Separación de responsabilidades

Pipeline Dueño de
eai-terraform-* RG, storage state, SQL, Blob, DI, KV, ACA (finance-api + finance-web + mcp-sup), RBAC, env vars, secrets
eai-finance-api-deploy Build imagen ACR + roll image finance-api Container App
eai-finance-web-deploy Build imagen ACR + roll image finance-web Container App
eai-mcp-suppliers-deploy Build imagen ACR + roll image MCP suppliers Container App
eai-mvp-ci Validate / test (sin tocar Azure)

Única intervención humana operativa: aprobar environments dev-terraform-apply / dev-app-deploy.

Service connection

  • Service connection: sc-azure-eai-dev — SP sp-eai-devops-dev
  • Contributor en la suscripción (crear recursos)
  • User Access Administrator en rg-eai-dev-mxc (para que Terraform gestione role_assignment del MI)
  • Storage Blob Data Contributor en el storage de tfstate
  • Variable group: eai-terraform-dev (TF_VAR_SQL_ADMIN_PASSWORD)
  • Environment: dev-terraform-apply (gate de apply)

Repo

  • https://dev.azure.com/honneprojects/Enterprise-AI-Platform/_git/Enterprise-AI-Platform
  • Branches: main, develop

Boards

  • Épicas E0–E6 (IDs 1–7)
  • User Stories (equivalente a PBI en proceso Agile) + Tasks creadas y enlazadas
  • Areas: Platform, Finance, HR, Infra, Security
  • Iterations: I0–I5
  • Backlog: https://dev.azure.com/honneprojects/Enterprise-AI-Platform/_backlogs/backlog/
  • Script de creación: scripts/create-boards-backlog.ps1
Épica Iteración Stories (aprox.)
E0 Design I0 4 (3 Closed)
E1 Core local I1 6
E2 Finance I2 6
E3 HR + MCP I3 4
E4 Agents I4 4
E5 Gateway/Front I4 4
E6 IaC/Demo I5 5

Seguridad PAT

El PAT compartido por chat no tenía scope Code (solo sirvió para Project/Work Items vía CLI).
Los pushes se hicieron con token AAD del usuario logueado en az.
Rotar/revocar el PAT expuesto y crear uno nuevo solo si hace falta, con scopes mínimos: Code (Read & Write), Build (Read & execute), Work Items (Read & write), Project and Team.

Environments

  • dev-terraform-apply — gate manual apply Terraform
  • dev-app-deploy — gate manual deploy Container App (finance-api)

Seguridad

  • PAT solo en User settings / pipelines secrets — nunca en el repo
  • Rotar cualquier PAT que se haya compartido por chat