
Estoy usando dos servidores CentOS. No estoy usando ningún repositorio de código. En Jenkins, cuando hago clic en "Nuevo elemento", no veo ningún lugar para ingresar al servidor de destino. Espero un lugar para configurar un servidor de destino para una compilación determinada (por ejemplo, para ejecutar un comando bash o transferir un archivo desde el servidor Jenkins al servidor de destino). Dado que Jenkins se ejecuta como usuario de Jenkins en el lado de Linux, no puede utilizar SSH como root. Me gustaría ser root y ejecutar un comando después de transferir un archivo desde el servidor Linux que admite Jenkins. Podría hacer esto con comandos de shell nativos en los pasos de compilación del "Nuevo elemento" de Jenkins. Hay un campo de texto libre para dichos comandos. Pero no sé cómo responder interactivamente al desafío de la contraseña.
¿Dónde configuro el servidor de destino de una implementación determinada?
¿Puedo codificar la contraseña de root en el trabajo de Jenkins? Si es así, ¿cómo lo hago? No quiero instalar sshpass.
Además de tener Jenkins central, ¿qué complementos son necesarios para implementar archivos de un servidor Linux a otro servidor Linux?
Respuesta1
En Jenkins se utilizan etiquetas para definir dónde se puede construir un proyecto. Una vez que cree un nuevo elemento, verá (en la configuración del trabajo) una casilla de verificación llamada "Restringir dónde se puede ejecutar este proyecto". Aquí puede usar el nombre del nodo esclavo (por ejemplo, esclavo4.miempresa) o crear una etiqueta que sea un contenedor para varios esclavos. Una vez completado correctamente, este trabajo siempre se basará en el nodo esclavo dado.
Si necesita más funcionalidad que esa, pruebe el complemento de parámetro NodeLabel (nodelabelparameter). Puede instalarlo desde Administrar Jenkins > Administrar complementos > Disponibles.
Para identificar en qué nodo se encuentra durante la compilación, puede, por ejemplo, configurar manualmente variables de entorno persistentes en ambos esclavos de compilación, como por ejemplo $SLAVENAME que devuelve "buildslave1", o usar el comando "hostname" de Linux en sus scripts para identificar el contexto actual. , y en base a ese resultado decide cómo proceder.