5.7 KiB
Padronização OCI para todos os MFEs
Concluído em: 2026-02-25
Contexto
O mfe-user tinha uma pipeline OCI funcional na branch devops que fazia Build → Upload para OCI Object Storage.
O API Gateway (api-gateway-mfe-dev, IP 10.110.198.250) já estava provisionado via Terraform, mas só servia o mfe-user.
Os demais MFEs (mfe-shell, mfe-auth, mfe-person, mfe-formalization, mfe-poc) não tinham pipeline OCI nem estavam no Terraform.
Objetivo concluído: Replicar o padrão em todos os MFEs, mantendo lógica DRY via template compartilhado.
O Que Foi Feito
1. Template OCI Compartilhado
Repositório: azure-pipelines-templates
Arquivo: /mfe/deploy-mfe-oci.yaml (branch main)
Commit: feat: add OCI deploy template for MFEs (deploy-mfe-oci.yaml)
Template reutilizável com dois parâmetros:
mfeName(string) — ex:mfe-shell,mfe-authbuildCommand(string, default:npm run build:dev)
Stages:
- Build:
npm ci+$(buildCommand)→ publica artefatodist - UploadToOCI: instala OCI CLI, configura
~/.oci/config, cria bucket se não existir, setapublic-access-type=ObjectReadWithoutList, faz upload com content-type por extensão
Variable Group usado: oci-terraform
Variáveis: OCI_PRIVATE_KEY_B64, OCI_USER_OCID, OCI_FINGERPRINT, OCI_TENANCY_OCID, OCI_REGION, TF_VAR_compartment_parent_ocid
Bucket name pattern: mfe-$(mfeName)-dev
Dist path: $(Pipeline.Workspace)/dist/$(mfeName)/browser/
2. Pipelines dos MFEs (branch devops)
Cada MFE tem agora um azure-pipelines.yml na branch devops com trigger para essa branch:
trigger:
branches:
include:
- devops
resources:
repositories:
- repository: templates
type: git
name: azure-pipelines-templates
extends:
template: mfe/deploy-mfe-oci.yaml@templates
parameters:
mfeName: '<nome-do-mfe>'
| Repo | Arquivo | Ação | Commit |
|---|---|---|---|
mfe-user |
/azure-pipelines.yml (branch devops) |
Atualizado: de inline → template OCI | feat: migrate CI/CD to OCI... |
mfe-shell |
/azure-pipelines.yml (branch devops) |
Atualizado: de AWS template → OCI template | feat: migrate CI/CD to OCI... |
mfe-auth |
/azure-pipelines.yml (branch devops) |
Atualizado: de AWS template → OCI template | feat: migrate CI/CD to OCI... |
mfe-person |
/azure-pipelines.yml (branch devops) |
Atualizado: de AWS template → OCI template | feat: migrate CI/CD to OCI... |
mfe-formalization |
/azure-pipelines.yml (branch devops) |
Criado novo | feat: migrate CI/CD to OCI... |
mfe-poc |
/azure-pipelines.yml (branch devops) |
Criado novo | feat: migrate CI/CD to OCI... |
3. Terraform — API Gateway MFE
Repositório: tf_oci_clusters
Arquivo: /environments/dev/api_gateway_mfe.tf (branch main)
Commit: feat(dev): add all 6 MFEs to api_gateway_mfe deployments
O array mfe_deployments foi atualizado de 1 para 6 entradas:
| MFE | Hostname | Bucket |
|---|---|---|
| mfe-user | mfe-user-dev.invista.com.br | mfe-user-dev |
| mfe-shell | mfe-shell-dev.invista.com.br | mfe-shell-dev |
| mfe-auth | mfe-auth-dev.invista.com.br | mfe-auth-dev |
| mfe-person | mfe-person-dev.invista.com.br | mfe-person-dev |
| mfe-formalization | mfe-formalization-dev.invista.com.br | mfe-formalization-dev |
| mfe-poc | mfe-poc-dev.invista.com.br | mfe-poc-dev |
Como Funciona
Fluxo de Deploy
Push para branch devops em qualquer MFE repo
↓
azure-pipelines.yml trigga
↓
Extends deploy-mfe-oci.yaml@templates
↓
Stage: Build
npm ci + npm run build:dev
Publica artefato 'dist'
↓
Stage: UploadToOCI
Instala OCI CLI
Configura ~/.oci/config (via oci-terraform variable group)
Cria bucket mfe-<nome>-dev (se não existir)
Seta public-access-type=ObjectReadWithoutList
Upload de todos arquivos com content-type correto
Acesso após Terraform Apply
O Terraform cria um deployment por MFE no API Gateway api-gateway-mfe-dev.
URL base do gateway: https://guhal72tzyekzchzamhhi3lvgi.apigateway.sa-saopaulo-1.oci.customer-oci.com/
Cada MFE fica acessível em:
mfe-user-dev.invista.com.br→ Object Storagemfe-user-devmfe-shell-dev.invista.com.br→ Object Storagemfe-shell-dev- etc.
Notas Importantes
- A branch
devopsdo mfe-user (pipeline multi-cloud inline) é mantida como está — oazure-pipelines.ymlatualizado convive com o inline existente porque substituiu o arquivo existente com o novo template - mfe-formalization e mfe-poc não tinham pipeline algum — o novo arquivo OCI é o primeiro
- Os buckets
mfe-{name}-devsão criados automaticamente pela pipeline se não existirem - Após
terraform applyo API Gateway cria um deployment por MFE no mesmo gateway (rota por hostname)
Verificação
Pipeline
Após push para branch devops em qualquer MFE:
- Azure DevOps detecta trigger na branch
devops - Executa Build stage (npm ci + build:dev)
- Executa UploadToOCI stage (cria bucket + faz upload)
- Bucket
mfe-<nome>-devdisponível no OCI Object Storage
Terraform
Após terraform apply no ambiente dev:
- API Gateway cria um deployment por MFE no
mfe_deploymentslist - Cada deployment tem rotas:
GET /→index.html(SPA entry point)GET /{path*}→ arquivos estáticos do bucket
Referências
- OCI-MFE-TASKS.md — Checklist completo
- OCI-MFE-STEPBYSTEP.md — Guia passo a passo
- OCI-TERRAFORM.md — Terraform configuração
- Template:
azure-pipelines-templates/mfe/deploy-mfe-oci.yaml - Terraform:
tf_oci_clusters/environments/dev/api_gateway_mfe.tf