我有一个Jenkins作业,需要一个文件作为参数(我使用的是文件参数插件)。当我调用Jenkins时,我注意到文件参数没有发送,但其他参数(CHOICE和string),我做错了什么?
$credPair = "user:token";
$encodedCredentials = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($credPair));
$headers = @{
"Authorization" = "Basic $encodedCredentials";
"Content-Type" = "multipart/form-data";
}
$choiceParam = "option"
$stringParam = "value"
$file = "file_path"
$Body = @{ "File" = [IO.File]::ReadAllText($file); }
$url = "https://server/job/buildWithParameters?CHOICE=" + $choiceParam + '&string' + $stringParam
try {
Invoke-RestMethod -Uri $url -Headers $headers -Method Post -Body $Body
}
catch {
Write-Host "StatusCode: " $_.Exception.Response.StatusCode.value__
Write-Host "StatusDescription: " $_.Exception.Response.StatusDescription
write-host "Error details: " $_.ErrorDetails.Message
exit
}
我已经试过下一个问题,但没有成功multipart/form-data file upload with PowerShellpowershell invoke-restmethod multipart/form-dataHow to send multipart/form-data with PowerShell Invoke-RestMethodUsing PowerShell Invoke-RestMethod to POST large binary multipart/form-data
我想使用PowerShell通过HTTP Post请求向Jenkins发送文件参数
2条答案
按热度按时间kpbpu0081#
@zett42我解决了,显然只有在你把文件的形式,其他参数都放在网址
42fyovps2#
**注意:**实际上,下面的解决方案只适用于 freestyle 作业,如果您需要 pipeline 作业的解决方案,可以使用this solution(需要文件参数plugin)。
我已经使用
Invoke-RestMethod
和参数-Form
成功地将文件上传到Jenkins。这样的东西应该是可行的:
作为参考,我得到了从this answer上传文件到Jenkins作业的基本原理。