Appearance
Variables y secretos de CI/CD
Las variables se configuran en GitLab en Settings → CI/CD → Variables de cada proyecto. Ningún secreto se guarda en los repositorios.
Convención de prefijos:
DEV_*: entorno de test (ramadevelop).PROD_*: entorno de producción (ramamain).
WARNING
Las variables PROD_* deben marcarse como Protected (solo disponibles en ramas protegidas, como main) y los secretos como Masked para que no aparezcan en los logs de los jobs.
Variables predefinidas de GitLab
Usadas por los jobs build; no requieren configuración:
| Variable | Uso |
|---|---|
CI_REGISTRY, CI_REGISTRY_IMAGE | Registry y ruta de la imagen del proyecto |
CI_REGISTRY_USER, CI_REGISTRY_PASSWORD | Login al registry desde el job |
CI_COMMIT_BRANCH, CI_COMMIT_REF_SLUG | Rama y su versión normalizada para tags |
CI_COMMIT_SHORT_SHA | SHA corto para el tag inmutable |
CI_COMMIT_TAG, CI_JOB_TOKEN, CI_API_V4_URL | Pipeline de Custodio |
Repositorios de servicio
Todos
| Variable | Tipo | Descripción |
|---|---|---|
INFRA_DEPLOY_TRIGGER_TOKEN | Variable, Masked | Token de trigger del proyecto infra-deploy |
TIP
Es recomendable definir INFRA_DEPLOY_TRIGGER_TOKEN a nivel del grupo proceso-seleccion para no repetirla en cada repositorio.
Frontends
Cada frontend requiere las variables de build de su tabla en Imágenes Docker, en ambas versiones:
DEV_VITE_<NOMBRE> → build de develop (test)
PROD_VITE_<NOMBRE> → build de main (producción)Ejemplo para frontend-portal-admin-seleccion-postulantes:
| Test | Producción |
|---|---|
DEV_VITE_TITLE_APP | PROD_VITE_TITLE_APP |
DEV_VITE_API_ENDPOINT | PROD_VITE_API_ENDPOINT |
DEV_VITE_API_ENDPOINT_PATH | PROD_VITE_API_ENDPOINT_PATH |
DEV_VITE_API_ENDPOINT_FILES | PROD_VITE_API_ENDPOINT_FILES |
DEV_VITE_AUTH_ORIGIN_PORTAL | PROD_VITE_AUTH_ORIGIN_PORTAL |
DEV_VITE_API_FILES_PRIVATE | PROD_VITE_API_FILES_PRIVATE |
DEV_VITE_MANUAL_USUARIO_URL | PROD_VITE_MANUAL_USUARIO_URL |
DEV_VITE_MANUAL_TECNICO_URL | PROD_VITE_MANUAL_TECNICO_URL |
DEV_VITE_AUTH_PUBLIC_URL | PROD_VITE_AUTH_PUBLIC_URL |
Estas variables no son secretas: terminan incrustadas en el JavaScript público.
Orquestador (infra-deploy)
Todas existen con prefijo DEV_ y PROD_, salvo las del registry.
Host de despliegue
| Variable (sin prefijo) | Tipo | Descripción |
|---|---|---|
DEPLOY_HOST | Variable | IP o nombre del host del entorno |
DEPLOY_USER | Variable | Usuario SSH en el host |
SSH_PRIVATE_KEY | Variable, Protected | Contenido de la clave privada SSH (se carga con ssh-add) |
DEPLOY_BASE_PATH | Variable | Directorio base de los stacks en el host |
El usuario de despliegue debe poder ejecutar docker sin sudo en el host.
IDP (auth-backend)
| Variable (sin prefijo) | Tipo | Se escribe en back.env como |
|---|---|---|
IDP_BACK_ENV | File, Protected | Base del archivo (variables no secretas) |
IDP_SECRET_KEY | Variable, Masked+Protected | SECRET_KEY |
IDP_SIGNING_KEY_MASTER_SECRET | Variable, Masked+Protected | SIGNING_KEY_MASTER_SECRET |
IDP_DATABASE_PASS | Variable, Masked+Protected | DATABASE_PASS |
Seleccionador (backend-seleccion-postulantes)
| Variable (sin prefijo) | Tipo | Se escribe en back.env como |
|---|---|---|
SELECCIONADOR_BACK_ENV | File, Protected | Base del archivo (variables no secretas) |
SELECCIONADOR_SECRET_KEY | Variable, Masked+Protected | SECRET_KEY |
SELECCIONADOR_SIGNING_KEY_MASTER_SECRET | Variable, Masked+Protected | SIGNING_KEY_MASTER_SECRET |
SELECCIONADOR_DATABASE_PASS | Variable, Masked+Protected | DATABASE_PASS |
Registry (compartidas por ambos entornos)
| Variable | Tipo | Descripción |
|---|---|---|
REGISTRY_DEPLOY_TOKEN_USER | Variable | Usuario del deploy token del grupo |
REGISTRY_DEPLOY_TOKEN_PASSWORD | Variable, Masked | Token con permiso read_registry |
Variable de trigger
| Variable | Origen | Descripción |
|---|---|---|
SERVICE_NAME | Enviada por trigger-infra-deploy o manualmente | Servicio a desplegar. Si se omite, se despliegan todos |
Archivo back.env
El archivo final que reciben los backends es la concatenación de <SISTEMA>_BACK_ENV + los tres secretos individuales. Se monta en el contenedor como env_file y como /app/.env (solo lectura).
- Para cambiar una variable no secreta: editar la variable de tipo File
<PREFIJO>_<SISTEMA>_BACK_ENVen GitLab y volver a desplegar. - Para cambiar un secreto: editar la variable individual y volver a desplegar.
- Los cambios hechos directamente en el host se pierden en el siguiente despliegue.
WARNING
back.env debe incluir SYSTEM_STATUS=True. Con SYSTEM_STATUS en False (valor por defecto en manage.py), los comandos de gestión distintos de check, runserver, help, version y shell se omiten, incluidas las migraciones del arranque. Ver Scripts útiles de los backends.
Custodio
No requiere variables personalizadas: usa CI_JOB_TOKEN para publicar en el Package Registry del propio proyecto. Requiere un runner Windows registrado con el tag windows y Python con Tkinter.
