【问题标题】:TeamCity sees string with % as a TeamCity VariableTeamCity 将带有 % 的字符串视为 TeamCity 变量
【发布时间】:2017-07-28 21:30:47
【问题描述】:

我正在尝试在 powershell 中调用 rest 方法从 teamcity 到 jira。 URL 需要正确编码才能正常工作。如果我删除这些编码字符,我不会得到正确的返回结果。查看示例和其他来源,jql 需要这样编码。

我的 uri 是

https://localhost:8443/rest/api/2/search?jql=project%20%3D%20CPS%20and%20fixVersion%20%3D%203.25

但是,每次我在 teamcity 中输入此内容时,都会提示我的构建配置输入 4 个新变量。我理解 teamcity 为何会这样想,但我已尽一切努力逃避他们。

我试过了:

  https://localhost:8443/rest/api/2/search?jql=project%%20%%3D%%20CPS%%20and%%20fixVersion%%20%%3D%%203.2

  https://localhost:8443/rest/api/2/search?jql=project%%%20%%%3D%%%20CPS%%%20and%%%20fixVersion%%%20%%%3D%%%203.2

https://localhost:8443/rest/api/2/search?jql=project`%20`%3D`%20CPS`%20and`%20fixVersion`%20`%3D`%203.2

我的用法如下:

$jiraFixVersion = $version.Substring(0,$length-5);
$params = @{uri = "https://jira.rtdomau.local:8443/rest/api/2/search?jql=project%20%3D%20CPS%20and%20fixVersion%20%3D%20$($jiraFixVersion)";
               Method = 'Get'; #(or POST, or whatever)
               Headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($user):$($password)"));
           } #end headers hash table
 } #end $params hash table

$var = invoke-restmethod @params

谁能给点别的建议?

【问题讨论】:

  • 将 % 符号加倍或加倍应该可以。 (我不知道什么时候加倍和三倍,但其中一个往往会起作用。)当你尝试这样做时,你得到了什么错误?与没有加倍/三倍的情况不同吗? (OTOH,我不认为用` 转义在这里会做任何合理的事情。)

标签: powershell teamcity jira


【解决方案1】:

如果您不使用动态值,请使用单引号作为字符串文字。

$Params = @{ uri = 'https://jira.rtdomau.local:8443/rest/api/2/search?jql=project%20%3D%20CPS%20and%20fixVersion%20%3D%20$($jiraFixVersion)';
...

【讨论】:

  • 这似乎无关紧要。 @Dritzz is 使用“动态值”(变量);见$jiraFixVersion。此外,他的问题在于 %,而不是 $。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
相关资源
最近更新 更多