簡體   English   中英

Jenkins在groovy腳本中使用REST API創建文件夾

[英]Jenkins create Folder with REST API in groovy script

我正在嘗試使用groovy腳本在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中的文件夾?

編輯:當我嘗試使用.execute()在groovy腳本中運行curl命令時,出現“系統找不到指定的文件”錯誤。

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()

在Windows平台上不存在curl命令-因此您擁有

“該系統找不到指定的文件”。

403-禁止。 我猜認證有問題。

最好將用戶和傳遞移動到標題:

post.setRequestProperty("Authorization", "Basic ${"username:password".bytes.encodeBase64().toString()}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM