Introducció
Com a ampliació del model de CI/CD que ofereix SIC+, s’han incorporat dos nous entorns als worfklows: PREREP i PROREP. Funcionen com a rèpliques independents dels entorns existents PRE i PRO respectivament.
L’objectiu és habilitar desplegaments sobre entorns clons sense impactar als entorns productius i preproductius. Degut a la demanada d’alguns departaments per diferents casos d’ús (entorns d’uat més estables, formació, homologació, configuració, …) s’ha decidit estandarditzar aquests entorns sota el concepte d’entorns rèplica on donar cabuda al màxim de casuístiques que puguin sorgir.
Diferències clau respecte a PRE i PRO
| Aspecte | PRE / PRO | PREREP / PROREP |
|---|---|---|
| Gestió de canvis (ITSM/Remedy) | obligatòria (CRQ aprovada) | no requereix CRQ |
| Generació d’artefactes d’aplicació | sí, via CI | no: es reutilitzen els artefactes ja generats per a PRE/PRO |
| Aprovisionament d’infra | sí (branques release / master) |
sí, amb branques dedicades (release-replica / master-replica) |
| Sufixos de tag i noms de pla | -RC / sense sufix |
-RC-REP / -REP |
| Sufixos del tag deployed-version | -preproduction / -production |
-preproduction-replica / -production-replica |
Tota aquesta diferenciació és automàtica: el workflow detecta l’entorn i aplica el comportament corresponent.
Desplegament d’infraestructura
El desplegament d’infraestructura manté el mateix model que ja s’utilitza a SIC+ per a PRE i PRO, ampliat amb dues noves branques operatives i els seus entorns corresponents:
Estructura del repositori d’infra
env/
├── pre/ ← Terraform per a PRE
├── pro/ ← Terraform per a PRO
├── prerep/ ← Terraform per a PREREP
└── prorep/ ← Terraform per a PROREP
Cada carpeta env/<entorn>/ conté els arxius Terraform específics de l’entorn (backend.tf, providers.tf, variables.tf, terraform.tfvars, recursos…). El workflow resol automàticament env/${environment}/ segons l’entorn seleccionat.
Mapeig branques ↔ entorns
| Branca del repo d’infra | Entorn destí | Sufix del tag i del pla |
|---|---|---|
release |
PRE | -RC |
master |
PRO | (sense sufix) |
release-replica |
PREREP | -RC-REP |
master-replica |
PROREP | -REP |
Cicle de desplegament (general)
- Obertura de PR contra la branca de destí → s’executa el workflow Infra CI on PR: executa
terraform plancontraenv/<entorn>/i publica el resultat al PR. - Merge del PR → s’executa Infra CI on Commit: torna a generar el pla i crea un tag al repositori amb la versió i el sufix corresponent.
- Aplicació manual del pla → executar el workflow Infra CD Apply indicant:
environment: l’entorn destí.infra_version_plan: el nom del tag generat al pas 2 (sense extensió).itsm_id_change_coordinator: CRQ de Remedy (només per a PRE i PRO; a PREREP/PROREP el valor s’ignora encara que el camp segueixi visible).
El workflow obté el .tfplan, executa terraform apply, i crea un tag de deployed-version al repo amb el sufix de l’entorn.
Particularitats de les rèpliques
- No requereixen ITSM/Remedy: les branques
release-replicaimaster-replicaes gestionen igual que un entorn de desenvolupament pel que fa a aprovacions. - Els tags deployed-version acaben en
-preproduction-replicao-production-replica, cosa que permet distingir a l’històric del repositori quins entorns han rebut cada versió.
Desplegament a PREREP (rèplica de PRE)
PREREP reflecteix el flux de PRE amb dues diferències: branques i ITSM.
Per a infraestructura
- Crear PR dels canvis contra la branca
release-replica. - Infra CI on PR: genera el pla contra
env/prerep/. - Fer merge del PR → Infra CI on Commit crea el tag
X.Y.Z-RC-REPi general elX.Y.Z-RC-REP.tfplan. - Executar Infra CD Apply manualment:
environment=prerepinfra_version_plan=X.Y.Z-RC-REPitsm_id_change_coordinator= (qualsevol valor; s’ignora)
- Resultat:
terraform applysobreenv/prerep/, i tagX.Y.Z-RC-REP-preproduction-replicaal repositori.
Per a artefactes (container, function, static, etc.)
Important: els repositoris d’artefactes no requereixen branca nova. L’artefacte generat per a PRE (amb sufix -RC) es reutilitza tal qual.
- Comprovar que existeix l’artefacte desitjat al registre d’imatges (JFrog Artifactory corporatiu i ACR/ECR/GCAR). Si no, generar-lo primer amb un commit a
release. - Executar el workflow CD corresponent (
Container CD,Function CD,Static CD…) manualment:environment=prerepartifact_version=X.Y.Z-RC(la mateixa versió que es desplegaria a PRE)
- El workflow:
- Carrega els secrets del Key Vault de PREREP.
- Descarrega l’artefacte
-RCdel registry (sense promocions). - El desplega a l’entorn de PREREP.
- Crea el tag
X.Y.Z-RC-preproduction-replicaal repo. - Omet la integració amb d’ITSM/Remedy.
Requisits previs (responsabilitat dels equips d’aprovisionament excepte codi als repositoris)
- GitHub Environment
prerepconfigurat al repo, amb els seus secrets i variables (credencials cloud, nom del Key Vault, etc.). - Recursos cloud de PREREP aprovisionats.
- Als repositoris d’infra: carpeta
env/prerep/amb els.tfespecífics, i blob containerprerepcreat al storage account de plans.
Desplegament a PROREP (rèplica de PRO)
PROREP funciona de forma anàloga a PREREP, però apuntant a l’artefacte productiu (sense sufix).
Per a infraestructura
- Crear PR dels canvis contra la branca
master-replica. - Infra CI on PR: genera el pla contra
env/prorep/. - Fer merge del PR → Infra CI on Commit crea el tag
X.Y.Z-REPi genera elX.Y.Z-REP.tfplan. - Executar Infra CD Apply manualment:
environment=prorepinfra_version_plan=X.Y.Z-REPitsm_id_change_coordinator= (qualsevol valor; s’ignora)
- Resultat:
terraform applysobreenv/prorep/, i tagX.Y.Z-REP-production-replicaal repositori.
Per a artefactes
Mateix principi que PREREP, però reutilitzant l’artefacte productiu (el generat des de master, sense sufix).
- Comprovar que existeix l’artefacte productiu al registre. Si no, generar-lo primer amb un commit a
master. - Executar el workflow CD corresponent manualment:
environment=prorepartifact_version=X.Y.Z(la mateixa versió que es desplegaria a PRO, sense sufix)
- El workflow:
- Carrega els secrets del Key Vault de PROREP.
- Descarrega l’artefacte productiu del registre (sense promocions).
- El desplega a l’entorn de PROREP.
- Crea el tag
X.Y.Z-production-replicaal repositori. - Omet la integració amb ITSM/Remedy.
Requisits previs (responsabilitat dels equips d’aprovisionament excepte codi als repositoris)
- GitHub Environment
prorepconfigurat al repositori, amb els seus secrets i variables. - Recursos cloud de PROREP aprovisionats.
- Als repos d’infra: carpeta
env/prorep/amb els.tfespecífics, i blob containerprorepcreat al storage account de plans.
Taula resum
| PRE | PREREP | PRO | PROREP | |
|---|---|---|---|---|
| Branca d’infra | release |
release-replica |
master |
master-replica |
| Sufix de tag/pla (infra) | -RC |
-RC-REP |
(cap) | -REP |
| Versió de l’artefacte a desplegar | X.Y.Z-RC |
X.Y.Z-RC |
X.Y.Z |
X.Y.Z |
| Sufix del tag deployed-version | -preproduction |
-preproduction-replica |
-production |
-production-replica |
| Carpeta Terraform | env/pre/ |
env/prerep/ |
env/pro/ |
env/prorep/ |
| Credencials que carrega el workflow | les de PRE | les de PREREP | les de PRO | les de PROREP |
| Requereix CRQ d’ITSM/Remedy | sí | no | sí | no |
| Genera nou artefacte | sí | no | sí | no |
Preguntes freqüents
- Des de quina branca puc executar un CD a PREREP/PROREP?
S’ha d’executar des de la branca propietària de l’artefacte que es reutilitza: release per a desplegaments a PREREP (que reutilitza l’artefacte amb sufix -RC) i master per a desplegaments a PROREP (que reutilitza l’artefacte productiu sense sufix).
- Necessito crear branques noves als repos d’aplicació?
No. Només els repos d’infra utilitzen les branques release-replica i master-replica. Els repos d’aplicació reutilitzen els artefactes generats per les seves branques habituals (release i master).
- I si vull desplegar a PREREP però l’artefacte
-RCencara no existeix?
Primer cal generar-lo: commit a release del repo d’aplicació → el CI on commit genera la imatge/paquet amb tag -RC al registry. Després es pot executar el CD a PREREP.
- Què passa amb el camp
itsm_id_change_coordinatorquan executo a PREREP/PROREP?
El workflow l’ignora, no s’invoca a Remedy.
- Les rèpliques comparteixen recursos cloud amb PRE/PRO o tenen els seus propis?
Les rèpliques disposen dels seus propis recursos cloud, independents dels de PRE/PRO, amb la seva pròpia nomenclatura. Això garanteix l’aïllament total entre els desplegaments de PRE/PRO i els de rèplica.