Создавайте Jenkins Job удаленно с помощью REST API

Я не могу создать работу удаленно (REST API + Почтальон), я пытаюсь

СООБЩЕНИЕ:

http://localhost:8080/createItem?name=NEWJOB

ИЛИ ЖЕ

http://localhost:8080/job/NEWJOB/build

и всегда есть ошибка 403 (методы GET работают).

Здесь я вижу, что мне нужно создать config.xml для POST:

https://issues.jenkins-ci.org/browse/JENKINS-9410?focusedCommentId=204821&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-204821

Я не понимаю, как создать этот конфиг? Нужен ли этот конфиг? Как создать Дженкинс Джоб удаленно?

1 ответ

Решение

Это займет у меня несколько шагов:

1) ПОЛУЧИТЬ

http://localhost:8080/crumbIssuer/api/json 

+ заголовок Авторизация..................... Basic YWRtaW46YWRtaW4=

Значение поля авторизации было создано, когда я ввел логин и пароль (admin, admin в моем случае).

После этого запроса я увидел следующее:

{
    "_class": "hudson.security.csrf.DefaultCrumbIssuer",
    "crumb": "2ad62df85d23d4c65a25c0b33fb0ef61",
    "crumbRequestField": "Jenkins-Crumb"
}

2) Следующий шаг -> создать config.xml

Я просто беру это из другой работы Дженкинса (названный тест) вручную, когда я:

ПОЛУЧИТЬ http://localhost:8080/job/test/config.xml

+ заголовок заголовка Авторизация.............. Basic YWRtaW46YWRtaW4 =

3) Создать работу:

СООБЩЕНИЕ http://10.14.48.107:8080/createItem?name=NEWJOBNAME

+ заголовок Авторизация........ Basic YWRtaW46YWRtaW4 =

+ заголовок Content-Type........... text / xml

+ заголовок Дженкинс-Крамб......... 2ad62df85d23d4c65a25c0b33fb0ef61

Я беру это название заголовка и значение из 1-го крошки запроса

+Body-> raw->

<project>
<actions/>
<description/>
<keepDependencies>false</keepDependencies>
<properties>
<com.coravy.hudson.plugins.github.GithubProjectProperty plugin="github@1.29.0">
<displayName/>
</com.coravy.hudson.plugins.github.GithubProjectProperty>
</properties>
<scm class="hudson.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>false</concurrentBuild>
<builders/>
<publishers/>
<buildWrappers/>
</project>

После этого шага я ничего не ответил, но работа была создана удаленно!

Другие вопросы по тегам