pipeline { agent none parameters { string( name: 'NODO', defaultValue: '', description: 'Nombre exacto del nodo a deployar' ) choice( name: 'CLIENTE', choices: [ 'SELECCIONAR_CLIENTE', 'cencosud-jumbo', 'censosud-staisabel', 'changomas-hiper', 'changomas-super', 'dibal', 'hisense', 'lsco', 'mbs-econo', 'mbs-famcoop', 'mbs-ralphs', 'mbs-supermax', 'modatelas', 'walmart-chile-acuenta', 'walmart-chile-lider', 'wm-mexico-bodega', 'wm-mexico-walmart' ], description: 'Cliente para el cual se ejecuta el deploy' ) } stages { stage('Registro de parámetros') { agent none when { expression { params.CLIENTE == null } } steps { echo 'Primer build: Jenkins está registrando los parámetros de este Jenkinsfile. No se ejecuta ningún deploy. Volvé a correr el job con "Build with Parameters".' script { currentBuild.result = 'NOT_BUILT' } } } stage('Preparar scripts') { agent { label 'built-in' } when { expression { params.CLIENTE != null } } steps { sh 'cp /opt/deploy/install.sh .' stash name: 'scripts', includes: 'install.sh' } } stage('Deploy') { agent { label 'built-in' } when { expression { params.CLIENTE != null } } steps { script { if (!params.NODO?.trim()) { error "El parámetro NODO es obligatorio" } if (params.CLIENTE == 'SELECCIONAR_CLIENTE') { error "El parámetro CLIENTE es obligatorio" } def target = params.NODO.trim() node(target) { unstash 'scripts' sh "bash install.sh '${params.CLIENTE.trim()}'" } } } } } }