Создавайте задания и выполняйте их в jenkins с помощью REST

Я пытаюсь создать клиент WCF REST, который будет связываться с Jenkins и создать задание из XML файла, а затем построить задание. Я понимаю, что вы можете это сделать с Дженкинсом.

Можно ли предоставить некоторые команды, которые вы можете ввести в адресной строке браузера для создания и создания заданий? т.е.: http:localhost/jenkins/createItem?name=TESTJOB что-то вдоль этих строк.

Ответ 1

Смотрите страницу Jenkins API Wiki (включая комментарии в конце). Вы можете заполнить пробелы, используя документацию, предоставленную самим Дженкинсом; например, http://JENKINS_HOST/api предоставит вам URL-адрес для создания задания, а http://JENKINS_HOST/job/JOBNAME/api предоставит вам URL-адрес для запуска сборки.

Я настоятельно рекомендую вместо этого настраивать создание XML файлов конфигурации заданий и вместо этого искать плагин DSL для работы. Это дает вам хороший DSL для Groovy, чтобы создавать задания программно - гораздо более краткими и менее подверженными ошибкам.

Ответ 2

Обычно при анализе документации может потребоваться один или два дня. Полезно иметь доступ к командам кода или завитка, чтобы вы могли работать и работать в течение одного часа. Это моя цель с большим количеством стороннего программного обеспечения.

См. сообщение в http://scottizu.wordpress.com/2014/04/30/getting-started-with-the-jenkins-api/, в котором перечислены некоторые команды curl. Вам придется заменить my.jenkins.com(т.е. JENKINS_HOST) на свой собственный URL.

Чтобы создать задание, например, попробуйте:

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

Здесь используется общая конфигурация. Вы также можете загрузить конфигурацию из созданного вручную задания, а затем использовать его в качестве шаблона.

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" 

Чтобы выполнить задание (и задать строковые параметры), используйте:

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

Ответ 3

Благодаря GIST - https://gist.github.com/stuart-warren/7786892

Проверьте, существует ли работа

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

С плагином для папки

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

Без плагинов для папки

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

Создать папку

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"

Ответ 4

Если вы хотите создать задание в представлении, если вид существует.

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

файл build.xml filetemplate можно найти в корневом каталоге рабочей области

если вы хотите создать представление:

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

содержимое файла view.xml может быть:

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

и проверить, существует ли представление:

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

чтобы проверить, существует ли работа:

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

Ответ 5

Чтобы создать работу:

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

Чтобы создать работу:

curl -X POST -u username:API_TOKEN http://JENKINS_HOST/job/MY_JOB_NAME/build