web-dev-qa-db-fra.com

Créez des travaux et exécutez-les dans Jenkins à l'aide de REST

J'essaie de créer un client WCF REST qui communiquera avec Jenkins et créera un travail à partir d'un fichier XML, puis créera le travail. Je crois comprendre que vous pouvez faire cela avec Jenkins. 

Quelqu'un peut-il fournir des commandes que vous pouvez taper dans la barre d'adresse d'un navigateur pour créer et créer des travaux? ie: http:localhost/jenkins/createItem?name=TESTJOB quelque chose dans ce sens.

11
David

Voir la page Jenkins API Wiki (avec les commentaires à la fin). Vous pouvez combler les lacunes en utilisant la documentation fournie par Jenkins elle-même; Par exemple, http://JENKINS_Host/api vous donnera l'URL pour créer un travail et http://JENKINS_Host/job/JOBNAME/api vous donnera l'URL pour déclencher une construction.

Je recommande vivement d'éviter la création personnalisée de fichiers XML de configuration de travaux et de rechercher quelque chose comme le plug-in Job DSL . Cela vous donne un DSL basé sur Nice Groovy pour créer des tâches par programme - beaucoup plus concis et moins sujet aux erreurs.

10
gareth_bowles

Habituellement, lors de l'analyse de la documentation, cela peut prendre un ou deux jours. Il est utile d’être en mesure d’accéder au code ou aux commandes curl pour vous permettre de démarrer en une heure. C'est mon objectif avec beaucoup de logiciels tiers.

Voir le message sur http://scottizu.wordpress.com/2014/04/30/getting-started-with-the-jenkins-api/ qui répertorie plusieurs des commandes curl. Vous devrez remplacer my.jenkins.com (c'est-à-dire JENKINS_Host) par votre propre URL.

Pour créer un travail, par exemple, essayez:

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

Cela utilise une configuration générique. Vous pouvez également télécharger une configuration à partir d'un travail créé manuellement, puis l'utiliser comme modèle.

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" 

Pour exécuter le travail (et définir les paramètres de chaîne), utilisez:

curl "http://JENKINS_Host/job/MY_JOB_NAME/build"
curl "http://JENKINS_Host/job/MY_JOB_NAME/buildWithParameters?PARAMETER0=VALUE0&PARAMETER1=VALUE1"
17
Scott Izu

Merci à un Gist - https://Gist.github.com/stuart-warren/7786892

Vérifier si le travail existe

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

Avec plugin de dossier

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

Sans dossier plugin

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

Créer le dossier

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"
2
suryakrupa

Si vous souhaitez créer un travail dans une vue, celle-ci existe.

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

le filetemplate build.xml est disponible dans le répertoire racine de l'espace de travail d'un travail.

si vous voulez créer une vue:

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

le contenu du fichier view.xml pourrait être:

<?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>

et pour vérifier si une vue existe:

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

pour vérifier si un emploi existe:

curl -X POST -H "Content-Type:application/xml" "http://jenkins_Host/checkJobName?value=jobName"
0
Lucas Liu