Json powershell.exe:调用RestMethod:远程服务器返回错误:(406)不可接受
我在jenkinsfile中读取一个json响应,然后将其传递给一个stage,该stage通过从json响应中读取版本id来创建一个测试周期。我尝试了许多不同的方法来传递参数,但它总是显示错误406。我已将versionId存储在baseid变量中。如果我使用echo baseid,那么它可以工作,但如何在powershell脚本中使用它,如下所示。请帮忙 在添加测试循环阶段内检查版本IDJson powershell.exe:调用RestMethod:远程服务器返回错误:(406)不可接受,json,powershell,jenkins,groovy,jenkins-pipeline,Json,Powershell,Jenkins,Groovy,Jenkins Pipeline,我在jenkinsfile中读取一个json响应,然后将其传递给一个stage,该stage通过从json响应中读取版本id来创建一个测试周期。我尝试了许多不同的方法来传递参数,但它总是显示错误406。我已将versionId存储在baseid变量中。如果我使用echo baseid,那么它可以工作,但如何在powershell脚本中使用它,如下所示。请帮忙 在添加测试循环阶段内检查版本ID def config = "Release" node {
def config = "Release"
node {
def vid = readJSON file: 'E:/Jenkins/workspace/27-investigate-process/script.json'
baseid = "${vid.id}"
echo baseid
}
pipeline
{
agent none
parameters {
string(name: 'SPRINT_NUMBER', defaultValue: '9959')
string(name: 'RELEASE_NUMBER', defaultValue: '60')
string(name: 'CYCLE_NAME', defaultValue: '60')
}
stages
{
stage('Windows')
{
agent
{
node
{
label "csharp.is.avb.com"
customWorkspace "E:/Jenkins/ws/${env.BRANCH_NAME}".take(30)
}
}
stages
{
stage("Adding Test Cycle")
{
steps
{
echo baseid
powershell label: '', script: '''$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", "application/json")
$headers.Add("Authorization", "Basic E6WnlreEA5NDA5NTAyMzIy")
$headers.Add("Cookie", "JSESSIONID=D2C7FAFF013B856E8803F; atlassian.xsrf.token=B5DX-9S26-JQRI-OYXfd11236e12a575063_lin; sto-id=BHM")
$body = "{
`n `"clonedCycleId`": `"`",
`n `"name`": `"Official-${env:CYCLE_NAME}`",
`n `"build`": `"`",
`n `"environment`": `"`",
`n `"description`": `"Create cycle with sprint`",
`n `"startDate`": `"4/Dec/19`",
`n `"endDate`": `"30/Dec/20`",
`n `"projectId`": `"128`",
`n `"versionId`": `"$baseid`"
`n}"
$response = Invoke-RestMethod \'https://jira.it.avb.com/rest/zapi/latest/cycle\' -Method \'POST\' -Headers $headers -Body $body
$response | ConvertTo-Json'''
}
}
}
}
}
}我用脚本方法解决了这个问题。我创建了一个环境变量并在其中存储了版本id,然后在需要版本id的地方使用${env:VID}
script
{
env.VID = versionid
}
你看过HttpRequest插件了吗?这使得调用RESTAPI变得容易得多。是的,我试过了,但在我的案例中不起作用