2013-04-09 15 views
11

Sto provando a creare un client REST WCF che comunicherà a Jenkins e creerà un lavoro da un file XML e quindi creerà il lavoro. La mia comprensione è che puoi farlo con Jenkins.Creare lavori ed eseguirli in jenkins usando REST

Qualcuno può fornire alcuni comandi che è possibile digitare sulla barra degli indirizzi del browser per creare e creare lavori? vale a dire: http:localhost/jenkins/createItem?name=TESTJOB qualcosa su quelle linee.

risposta

10

Vedere Jenkins API Wiki page (compresi i commenti alla fine). È possibile colmare le lacune utilizzando la documentazione fornita dalla stessa Jenkins; ad esempio, http://JENKINS_HOST/api ti darà l'URL per la creazione di un lavoro e http://JENKINS_HOST/job/JOBNAME/api ti darà l'URL per attivare una build.

Consiglio vivamente di evitare la creazione personalizzata di file XML di configurazione lavoro e di guardare qualcosa come lo Job DSL plugin. Questo ti dà un bel DSL basato su Groovy per creare processi a livello di codice - molto più conciso e meno soggetto a errori.

+4

Grazie, mi ci è voluto un po 'ma finalmente sono riuscito a capirlo. Vorrei solo che la loro pagina wiki dell'API fosse più informativa e con esempi migliori. – David

16

In genere, durante l'analisi della documentazione, possono essere necessari uno o due giorni. È utile essere in grado di accedere ai comandi di codice o di arricciamento per farti funzionare in un'ora. Questo è il mio obiettivo con un sacco di software di terze parti.

Vedere il post allo http://scottizu.wordpress.com/2014/04/30/getting-started-with-the-jenkins-api/ che elenca alcuni dei comandi di arricciatura. Dovrai sostituire my.jenkins.com (es. JENKINS_HOST) con il tuo indirizzo.

Per creare un posto di lavoro, per esempio, provare:

curl -X POST -H "Content-Type:application/xml" -d "<project><builders/><publishers/><buildWrappers/></project>" "http://JENKINS_HOST/createItem?name=AA_TEST_JOB2" 

Questo utilizza una configurazione generica. È anche possibile scaricare una configurazione da un lavoro creato manualmente e quindi utilizzarla come modello.

curl "http://JENKINS_HOST/job/MY_JOB_NAME/config.xml" > config.xml 
curl -X POST -H "Content-Type:application/xml" -d @config.xml "http://JENKINS_HOST/createItem?name=AA_TEST_JOB3" 

Per eseguire il lavoro (e parametri di stringa set), l'uso:

curl "http://JENKINS_HOST/job/MY_JOB_NAME/build" 
curl "http://JENKINS_HOST/job/MY_JOB_NAME/buildWithParameters?PARAMETER0=VALUE0&PARAMETER1=VALUE1" 
+6

Ti amo così tanto – michaelsnowden

2

Grazie ad un GIST - https://gist.github.com/stuart-warren/7786892

Verificare se il lavoro esiste

curl -XGET 'http://jenkins/checkJobName?value=yourJobFolderName' --user user.name:YourAPIToken 

con il plugin cartella

curl -s -XPOST 'http://jenkins/job/FolderName/createItem?name=yourJobName' --data-binary @config.xml -H "Content-Type:text/xml" --user user.name:YourAPIToken 

senza plug-in cartella

curl -s -XPOST 'http://jenkins/createItem?name=yourJobName' --data-binary @config.xml -H "Content-Type:text/xml" --user user.name:YourAPIToken 

creare la cartella

curl -XPOST 'http://jenkins/createItem?name=FolderName&mode=com.cloudbees.hudson.plugins.folder.Folder&from=&json=%7B%22name%22%3A%22FolderName%22%2C%22mode%22%3A%22com.cloudbees.hudson.plugins.folder.Folder%22%2C%22from%22%3A%22%22%2C%22Submit%22%3A%22OK%22%7D&Submit=OK' --user user.name:YourAPIToken -H "Content-Type:application/x-www-form-urlencoded" 
0

Se si desidera creare un lavoro in una vista in base alla vista esistente.

curl -X POST -H "Content-Type:application/xml" -d @build.xml "http://jenkins_host/view/viewName/createItem?name=itemName" 

la costruzione.xml filetemplate potrebbe essere trovato nella directory principale del lavoro di un lavoro

se si desidera creare una vista:

curl -X POST -H "Content-Type:application/xml" -d @view.xml "http://jenkins_host/createView?name=viewName" 

il contenuto del file view.xml potrebbe essere:

<?xml version="1.0" encoding="UTF-8"?> 
<hudson.model.ListView> 
    <name>viewName</name> 
    <filterExecutors>false</filterExecutors> 
    <filterQueue>false</filterQueue> 
    <properties class="hudson.model.View$PropertyList"/> 
    <jobNames> 
     <comparator class="hudson.util.CaseInsensitiveComparator"/> 
    </jobNames> 
    <jobFilters/> 
    <columns> 
     <hudson.views.StatusColumn/> 
     <hudson.views.WeatherColumn/> 
     <hudson.views.JobColumn/> 
     <hudson.views.LastSuccessColumn/> 
     <hudson.views.LastFailureColumn/> 
     <hudson.views.LastDurationColumn/> 
     <hudson.views.BuildButtonColumn/> 
    </columns> 
</hudson.model.ListView> 

e per verificare se esiste una visione:

curl -X POST -H "Content-Type:application/xml" "http://jenkins_host/checkViewName?value=viewName" 

per verificare l'esistenza di un lavoro:

012.
curl -X POST -H "Content-Type:application/xml" "http://jenkins_host/checkJobName?value=jobName" 
Problemi correlati