Estado: PROPUESTO Fase 3
Audiencia: Carlos (arquitecto) + sysadmin nodo-00-tools
Tiempo estimado: 30-45 min (sin contar Install without restart de plugins)
Pre-requisitos: acceso administrador a https://jenkins.centricasoluciones.com
Esta guia complementa INTEGRACION_VAULT_JENKINS.md. Cuando termines los pasos, marca la Fase 3 como completa y procede a Fase 4 (pilotos).
Antes de tocar Jenkins, snapshot del nodo-00-tools (sysadmin):
# En nodo-00-tools
sudo tar -czf /var/backups/jenkins_home_$(date +%Y%m%d).tar.gz \
-C /var/lib/docker/volumes jenkins_home/_data \
--exclude='*/workspace' --exclude='*/builds'
ls -lh /var/backups/jenkins_home_*.tar.gz
Si algo sale mal en pasos siguientes, restaurar este tar.gz revierte la config.
| Plugin | Para que | Version minima |
|---|---|---|
NodeJS Plugin |
Instalar Node 22 como tool gestionada | 1.6.x |
SonarQube Scanner |
Ya instalado — verificar | 2.17.x |
Pipeline: Multibranch with defaults |
Ya instalado — verificar | n/a |
Docker Pipeline |
Ya instalado — verificar | 611+ |
SonarQube no requiere plugins separados para Python o TypeScript: el server (https://sonar.centricasoluciones.com) ya tiene los analizadores
sonar-pythonysonar-javascript. Verificalo entrando como admin → Administration → Marketplace → Installed. Si no estan, instalarlos en el server Sonar (no en Jenkins).
https://jenkins.centricasoluciones.com/manage/pluginManager/availableNodeJS en el filtroNodeJS Plugin (Authors: jenkinsci)https://jenkins.centricasoluciones.com/manage/pluginManager/installed
Buscar NodeJS — debe estar Enabled y sin warnings.
Node-22Esto crea la herramienta que el pipeline angular usa con tools { nodejs "Node-22" }.
https://jenkins.centricasoluciones.com/manage/configureTools/Node-22 (EXACTO — el pipeline busca este string)22.11.0 o la mas reciente LTS Node 22En un job de prueba (Pipeline script):
pipeline {
agent any
tools { nodejs "Node-22" }
stages {
stage('Smoke') {
steps {
sh 'node --version && npm --version'
}
}
}
}
Output esperado: v22.x.x y npm 10.x o superior.
pythonServicePipeline no instala Python — espera encontrarlo ya en el $PATH del agente Jenkins.
SSH al nodo-00-tools (puerto 2201) y entrar al contenedor Jenkins:
ssh nodo-00-tools 'docker exec jenkins which python3.11 && docker exec jenkins python3.11 --version'
Salida esperada:
/usr/local/bin/python3.11
Python 3.11.10
Editar el Dockerfile o docker-compose.yml de Jenkins (en nodo-00-tools) para extender la imagen base:
FROM jenkins/jenkins:lts-jdk21
USER root
RUN apt-get update \
&& apt-get install -y python3.11 python3.11-venv python3-pip libpq-dev \
&& rm -rf /var/lib/apt/lists/*
USER jenkins
Rebuild + restart:
cd /home/sysadmin/docker/compose/jenkins
docker compose build && docker compose up -d
Importante: este paso reinicia Jenkins ~30s. Avisar a desarrolladores.
| ID en Jenkins | Tipo | Uso |
|---|---|---|
gitlab-token |
Secret text (GitLab PAT) | Checkout multibranch |
sonarqube-token |
Secret text | Auth Sonar server |
docker-registry |
Username + password | Push a registry interno (10.110.0.2:5000) |
Aunque el .npmrc de nebula-vault ya tiene la credencial embebida en base64 (semisenior1:Nebula2026), debemos migrarla a Jenkins credentials y rotarla antes de prod. Por ahora dejamos la del repo, pero generamos un placeholder.
https://jenkins.centricasoluciones.com/manage/credentials/store/system/domain/_/newCredentialsUsername with passwordnexus-npm-frontendcentrica.ci (crear usuario nuevo en Nexus despues — paso 4.3)Nexus npm — repository centrica-frontend (lectura)Login admin en https://nexus.centricasoluciones.com:
centrica.ciCI, Last name: Jenkinsci@centricasoluciones.comnx-anonymous + nx-frontend-read (crear este rol si no existe; permisos nx-repository-view-npm-centrica-frontend-*-read)openssl rand -base64 24No usar
arquitecto.centricapara CI — esa cuenta tiene write+admin, riesgo si se filtra.
datavault-backenddatavault-backend → Type: Multibranch Pipeline → OKgitlab-tokennebula/vault/legacynebula/vault/legacy/datavault-backendJenkinsfileEn GitLab: https://gitlab.centricasoluciones.com/nebula/vault/legacy/datavault-backend/-/hooks/new
http://10.110.0.2:8080/multibranch-webhook-trigger/invoke?token=datavault-backend-webhookHTTP 200datavault-oais-server y nebula-vaultMismas opciones, cambiando nombres y rutas:
nebula/vault/legacy/datavault-oais-server / nebula/vault/nebula-vaultdatavault-oais-server-webhook / nebula-vault-webhookhttps://jenkins.centricasoluciones.com/manage/configure
Buscar seccion Global Pipeline Libraries.
| Campo | Valor esperado |
|---|---|
| Name | centrica-pipeline |
| Default version | main |
| Retrieval method | Modern SCM → Git |
| Project Repository | http://gitlab/architecture/centrica-pipeline-shared.git |
| Credentials | gitlab-token |
Mientras dure el piloto, cambiar Default version a feature/pipeline-vault SOLO para los 3 jobs del piloto, usando override por job:
En cada job Multibranch: Configure → Pipeline Libraries → Add → Name centrica-pipeline → Default version feature/pipeline-vault.
Esto aisla el piloto: los 22 Java siguen usando
main(v1.0.4).
Crear un job temporal _smoke-python-pipeline (Pipeline → Pipeline script):
@Library('centrica-pipeline@feature/pipeline-vault') _
pythonServicePipeline(
serviceName : 'smoke-py',
imagePath : 'sandbox/smoke-py',
composeDir : 'sandbox',
sonar : false,
deploy : false
)
Trigger Build manual. Esperado:
Mismo con angularNxPipeline (puede saltarse si te alcanza el tiempo).
/var/lib/docker/volumes/jenkins_home hechoNodeJS instalado y enabledNode-22 creada y verificada con job smokedocker exec jenkins python3.11 --version)sonar-python y sonar-javascript instalados en SonarQube server (no en Jenkins)nexus-npm-frontend registrada en Jenkins (aunque la cred real este pendiente de rotacion)datavault-backend, datavault-oais-server, nebula-vault)feature/pipeline-vault solo en los 3 jobs pilotoCuando termines, avisa al arquitecto para arrancar Fase 4 (pilotos en paralelo).
Olvidaste el paso 2 o pusiste otro nombre. El pipeline busca el string EXACTO.
Paso 3.2 incompleto. El contenedor Jenkins necesita Python 3.11 instalado.
Nexus npm rechaza la cred del .npmrc. Verificar que centrica-frontend repository acepte el usuario, o regenerar la cred base64.
El push al registry fallo o el compose tiene IMAGE_TAG=latest en .env (issue conocido en nebula/.env). Revisar IMAGE_TAG=latest-qa en /home/sysadmin/docker/compose/<dominio>/.env.
El token en la URL no coincide o el job no esta configurado con Multibranch Webhook Trigger. Re-revisar paso 5.2 — el token va en el query, NO en Secret Token.
Doc relacionado: INTEGRACION_VAULT_JENKINS.md, CICD_HOJA_RUTA_QA_PROD.md
Ultima actualizacion: 2026-05-12