Skip to content

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 (rama develop).
  • PROD_*: entorno de producción (rama main).

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:

VariableUso
CI_REGISTRY, CI_REGISTRY_IMAGERegistry y ruta de la imagen del proyecto
CI_REGISTRY_USER, CI_REGISTRY_PASSWORDLogin al registry desde el job
CI_COMMIT_BRANCH, CI_COMMIT_REF_SLUGRama y su versión normalizada para tags
CI_COMMIT_SHORT_SHASHA corto para el tag inmutable
CI_COMMIT_TAG, CI_JOB_TOKEN, CI_API_V4_URLPipeline de Custodio

Repositorios de servicio ​

Todos ​

VariableTipoDescripción
INFRA_DEPLOY_TRIGGER_TOKENVariable, MaskedToken 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:

TestProducción
DEV_VITE_TITLE_APPPROD_VITE_TITLE_APP
DEV_VITE_API_ENDPOINTPROD_VITE_API_ENDPOINT
DEV_VITE_API_ENDPOINT_PATHPROD_VITE_API_ENDPOINT_PATH
DEV_VITE_API_ENDPOINT_FILESPROD_VITE_API_ENDPOINT_FILES
DEV_VITE_AUTH_ORIGIN_PORTALPROD_VITE_AUTH_ORIGIN_PORTAL
DEV_VITE_API_FILES_PRIVATEPROD_VITE_API_FILES_PRIVATE
DEV_VITE_MANUAL_USUARIO_URLPROD_VITE_MANUAL_USUARIO_URL
DEV_VITE_MANUAL_TECNICO_URLPROD_VITE_MANUAL_TECNICO_URL
DEV_VITE_AUTH_PUBLIC_URLPROD_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)TipoDescripción
DEPLOY_HOSTVariableIP o nombre del host del entorno
DEPLOY_USERVariableUsuario SSH en el host
SSH_PRIVATE_KEYVariable, ProtectedContenido de la clave privada SSH (se carga con ssh-add)
DEPLOY_BASE_PATHVariableDirectorio 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)TipoSe escribe en back.env como
IDP_BACK_ENVFile, ProtectedBase del archivo (variables no secretas)
IDP_SECRET_KEYVariable, Masked+ProtectedSECRET_KEY
IDP_SIGNING_KEY_MASTER_SECRETVariable, Masked+ProtectedSIGNING_KEY_MASTER_SECRET
IDP_DATABASE_PASSVariable, Masked+ProtectedDATABASE_PASS

Seleccionador (backend-seleccion-postulantes) ​

Variable (sin prefijo)TipoSe escribe en back.env como
SELECCIONADOR_BACK_ENVFile, ProtectedBase del archivo (variables no secretas)
SELECCIONADOR_SECRET_KEYVariable, Masked+ProtectedSECRET_KEY
SELECCIONADOR_SIGNING_KEY_MASTER_SECRETVariable, Masked+ProtectedSIGNING_KEY_MASTER_SECRET
SELECCIONADOR_DATABASE_PASSVariable, Masked+ProtectedDATABASE_PASS

Registry (compartidas por ambos entornos) ​

VariableTipoDescripción
REGISTRY_DEPLOY_TOKEN_USERVariableUsuario del deploy token del grupo
REGISTRY_DEPLOY_TOKEN_PASSWORDVariable, MaskedToken con permiso read_registry

Variable de trigger ​

VariableOrigenDescripción
SERVICE_NAMEEnviada por trigger-infra-deploy o manualmenteServicio 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_ENV en 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.