2012-03-19 13 views

risposta

1

Non credo sia possibile. Tuttavia, come soluzione alternativa potresti prendere in considerazione la creazione di un lavoro che installerebbe i plugin tramite la CLI di Jenkins; puoi quindi richiamare quel lavoro tramite l'API con i parametri appropriati.

0

Come suggerito da malenkiy_scot, possiamo creare un lavoro e utilizzare la CLI di Jenkins. Ecco il modo segreto che faccio per la mia automazione nell'installazione dei plugin. I plugin Jenkins sono disponibili nello specchio Jenkins qui: http://updates.jenkins-ci.org/latest Questo link potrebbe non elencare nulla ma puoi scaricare il plug-in se conosci il nome del plug-in. Ad esempio, se si desidera scaricare il plugin skype-notifier, è possibile scaricarlo da http://updates.jenkins-ci.org/latest/skype-notifier.hpi L'URL generico è "http://updates.jenkins-ci.org/latest/ .hpi"

Dopo aver scaricato quel plugin, dovrebbe andare nella directory "plugins" in casa Jenkins sul server. Per la macchina Linux, sarà molto probabilmente in "/ var/lib/jenkins/plugins". Semplice esempio

wget http://updates.jenkins-ci.org/latest/skype-notifier.hpi 
mv skype-notifier.hpi /var/lib/jenkins/plugins 

Ci sono due cose da notare qui:

  1. Se il plugin ha delle dipendenze, quelli che non saranno installati di default. Se si conoscono gli altri plug-in richiesti, è possibile installarli allo stesso modo. Qui è necessario un po 'di processo manuale. Ma se è necessario uno stesso set di plugin, la dipendenza può essere risolta una sola volta e lo script può essere scritto per scaricarlo e spostarlo nella casa di Jenkins.
  2. I plug-in scaricati non possono essere utilizzati immediatamente. È richiesto un ricarico di Jenkins.
25

Invia (HTTP POST) i seguenti dati xml (con la tua versione plugin-id @) al gestore di plugin Jenkins. Controlla il mio jenkins install plugin script in sintesi.

Questa richiesta HTTP POST installa jenkins git plugin 2.0.

curl -X POST -d '<jenkins><install plugin="[email protected]" /></jenkins>' --header 'Content-Type: text/xml' http://localhost:8080/pluginManager/installNecessaryPlugins

+4

Questa dovrebbe essere la nuova risposta accettata qui. Inoltre, se si specifica il plugin come 'git @ latest', viene installata l'ultima versione del plugin. Il nome del plugin da usare qui è il campo 'Plugin ID', come quello che si trova qui su [wiki.jenkins-ci.org] (https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin) . L'unica altra cosa da tenere a mente è che l'operazione 'curl' tornerà prima che il plugin e i suoi prerequisiti siano installati completamente. Se si sta automatizzando questo, si consiglia vivamente di inserire alcuni timer di spegnimento automatico dopo aver installato un plugin. –

+0

Questo è d'oro! questa dovrebbe essere la risposta accettata. – OkezieE

+0

'curl -X POST --form-string" plugin.git.default = on "http: // localhost: 8080/pluginManager/install' Anche possibile, dove' git' è il nome del plugin. Ma questo richiede il riavvio di Jenkins. –

1

Alcuni plugin sono difficili da aggiornare sul file system perché gli altri dipendono da esso (credenziali è un esempio). Per tali plugin è possibile aggiornarli solo tramite l'interfaccia web.

Il frontend Jenkins ha una pagina in "Gestisci Jenkins" -> "Gestisci plug-in". Sotto la scheda 'Avanzate' c'è un modulo per 'uploadPlugin'. Consente l'automazione web con curl, potrebbe essere necessario aggiungere l'autenticazione.

curl -i -F [email protected] http://jenkinshost/jenkins/pluginManager/uploadPlugin 
1

In aggiunta ai metodi già menzionati (ho usato personalmente il "ricciolo uploadPlugin" quello fornito da @bbaassssiiee), è necessario considerare che se si utilizza PluginManager Jenkins cercherà di caricare il plugin dinamicamente, ma nel caso in cui è necessario riavviare Jenkins per inizializzare il plugin correttamente (questo era il mio caso), si dovrebbe aggiungere:

curl -kX POST https://${JENKINS_URL}/safeRestart 

nel caso in cui si copia il plugin direttamente al Jenkins/plugin, il riavvio è obbligatoria per il plugin da caricare.

Problemi correlati