start plugin descargar chrome java jenkins java-web-start

java - plugin - master jenkins



Problemas al iniciar el agente esclavo a través de Java Web Start en Jenkins (4)

Compruebe si el nombre Slave1 en la línea de comandos y la definición del nodo jenkins son los mismos. Debe ser Slave1 en el nodo jenkins también

Recientemente hemos actualizado a Jenkins a la última versión.

y desde entonces no he podido lanzar los esclavos a través de Java WebStart a través de la línea de comandos cada vez que intento lanzarlo, aparece el error "No se puede iniciar la aplicación"

Con esto en el panel de detalles.

CouldNotLoadArgumentException[ Could not load file/URL specified: http://MyServer:8080/computer/Slave1/slave-agent.jnlp] at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main.access$000(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Sin embargo, cuando intente buscar en el sitio de Jenkins y almorzarlo desde allí, FUNCIONA, si luego reinicia el cuadro, la línea de comandos en el inicio no podrá hacer el trabajo.

Este es el comando que estoy tratando de ejecutar desde el esclavo

cd "C:/Program Files (x86)/Java/jre7/bin" javaws http://MyServer:8080/computer/Slave1/slave-agent.jnlp

El problema es que esto solía funcionar. También he intentado actualizar a la última versión de Java pero sin suerte,

¿Alguna idea a alguien?


Para mí, tenía que asegurarme de tener el conjunto de conexión "anónimo" en los permisos de la matriz de jenkins Y tuve que hackear el archivo JNLP que se envió desde el maestro.

Yo diría que esto es error en Jenkins en 2.19.2. Básicamente, en el archivo JNLP que se extrae del servidor, el argumento de tunelización que contiene la ip y el puerto del maestro se reemplaza solo con el esclavo ip-addr.

Vea el código de engine.java, [línea # 308] que es desde donde se lanza la excepción:

https://searchcode.com/codesearch/view/65603521/

La excepción se ve como:

Originalmente mi archivo JNLP parecía:

<jnlp codebase="http://jenkins-master-ip-addr:8080/computer/Node1/" spec="1.0+"> <information> <title>Agent for Node1</title> <vendor>Jenkins project</vendor> <homepage href="https://jenkins-ci.org/"/> </information> <security> <all-permissions/> </security> <resources> <j2se version="1.7+"/> <jar href="http://jenkins-master-ip-addr:8080/jnlpJars/remoting.jar"/> <property name="hudson.showWindowsServiceInstallLink" value="true"/> </resources> <application-desc main-class="hudson.remoting.jnlp.Main"> <argument>b16fdf4388d98e4be6910218cfb5a9b5fa999bcd8dec90264e525171a3b02fce</argument> <argument>Node1</argument> <argument>-tunnel</argument> <argument>jenkins-slave-ip-addr</argument> <argument>-url</argument> <argument>http://jenkins-master-ip-addr:8080/</argument> </application-desc>

El problema es el argumento "-tunnel" arriba. Contiene solo la ip-addr de la máquina ESCLAVO. CAMBIANDO esto a la ip-add AND PORT de la máquina MASTER, ¡arreglado! Abajo:

<argument>-tunnel</argument> <argument>jenkins-master-ip-addr:9080</argument>


Si desea dejar el archivo JNLP en el maestro y no desea abrir el agujero de seguridad para que los usuarios anónimos se conecten como esclavos, edite el archivo jenkins-slave.xml para agregar la opción -jnlpCredentials junto con - Opción jnlpUrl:

-jnlpCredentials {user}:{apiKey}

dónde:
usuario es el nombre de usuario en la base de datos de cuenta de Jenkins
apiKey es la clave API del usuario (tenga en cuenta que NO es la contraseña del usuario)

Para obtener la clave API para el usuario, vaya a:

http://SERVER/user/USER/configure

y haga clic en el botón para mostrar la clave API de ese usuario.


Supuestamente, debido en gran parte a las publicaciones en los foros de Jenkins, este nuevo comportamiento se debe a una solución para un problema de seguridad: https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2013-01-04

Dos soluciones parecen estar surgiendo:

  1. Descargue el archivo JNLP (a través del navegador, wget, curl, lo que sea) y ejecútelo localmente; puede requerir parámetros adicionales.
  2. Vaya a Administrar Jenkins -> Configurar seguridad global, y bajo la estrategia de autorización de matriz basada en proyecto, habilite "conectar" en la sección "esclavo", para el usuario "Anónimo". Esto te dejaría abierto a ataques donde alguien emula a un esclavo (pero en mi caso, en una red de trabajo privada, eso no es un problema).