Дженкинс создает папку с REST API в отличном скрипте - PullRequest
2 голосов
/ 20 марта 2019

Я пытаюсь создать папку в Jenkins, используя отличный сценарий. Для этого я использую вызов REST API. Моей отправной точкой была команда curl:

curl -XPOST "http://userName:YourApiToken@JenkinsURL:Port/createItem?name=FolderName&mode=com.cloudbees.hudson.plugins.folder.Folder" -H "Content-Type:application/x-www-form-urlencoded"

Я получил это от https://gist.github.com/marshyski/abaa1ccbcee5b15db92c и позже узнал, что это также работает, если вы введете пользователя в URL. Использование этой строки в Windows cmd прекрасно работает и создает новую папку в моем Jenkins.

Теперь я пытаюсь сделать то же самое, но из отличного сценария. Для этого я использую следующий код:

import groovyx.net.http.*

def post = new URL("http://userName:YourApiToken@JenkinsURL:Port/createItem?name=FolderName&mode=com.cloudbees.hudson.plugins.folder.Folder").openConnection();
post.setRequestMethod("POST")
post.setDoOutput(true)
post.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
def postRC = post.getResponseCode();
println(postRC);
if(postRC.equals(200)) {
    println(post.getInputStream().getText());
}

Я получил это в основном от Groovy встроенный клиент REST / HTTP? (я слышал, Apache Http устарел)

Короче говоря, мне не удалось создать папку с заданным скриптовым скриптом. Я всегда получаю ответ 403 (я запускаю скрипт из windows cmd и внутри jenkins с консолью скрипта).

Я также поиграл с Jenkins-crumb, но это, кажется, не нужно, потому что вышеуказанная команда cmd уже работала.

Итак, вопрос в том, знает ли кто-то, что мне не хватает? почему скрипт groovy не работает, а команда curl работает? Или у кого-то другой подход к созданию папки в Jenkins из отличного сценария?

Edit: Когда я пытаюсь запустить команду curl в скрипте groovy с помощью .execute (), я получаю сообщение об ошибке «Система не может найти указанный файл».

String command = "curl -XPOST "+ '"http://user.name:ApiToken@JenkinsURL:8080/createItem?name=FolderName&mode=com.cloudbees.hudson.plugins.folder.Folder"'+ ' -H "Content-Type:application/x-www-form-urlencoded"'
println(command)
command.execute()

1 Ответ

0 голосов
/ 20 марта 2019

curl команда отсутствует на платформе Windows - поэтому у вас есть

"Системе не удается найти указанный файл".

403 - запрещено. что-то не так с auth, наверное.

лучше переместить пользователя и перейти к заголовку:

post.setRequestProperty("Authorization", "Basic ${"username:password".bytes.encodeBase64().toString()}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...