1

我有一些构建。每个构建都有两个标签。标签显示模块名称和版本。所以标签看起来像one-moduleand1.2.3two-moduleand 4.5.6

我可以做这个:

/httpAuth/app/rest/builds/?locator=tags:one-module,branch:unspecified:any&fields=build(tags(tag))

我会得到这个:

{
  "build": [
    {
      "tags": {
        "tag": [
          {
            "name": "1.2.4"
          },
          {
            "name": "one-module"
          }
        ]
      }
    },
    {
      "tags": {
        "tag": [
          {
            "name": "1.2.3"
          },
          {
            "name": "one-module"
          }
        ]
      }
    }
  ]
}

现在我想用标签one-module1.2.4. 我怎么能做到这一点?

我试试这个:

/httpAuth/app/rest/builds/?locator=tags:one-module,1.2.4,branch:unspecified:any&fields=build(tags(tag))

但我得到了这个:

Error has occurred during request processing (Bad Request).
Error: jetbrains.buildServer.server.rest.errors.LocatorProcessException: Bad locator syntax: Invalid dimension name :'1.2.4'. Should contain only alpha-numeric symbols or be known one. Details: locator: 'tags:one-module,1.2.4,branch:unspecified:any', at position 16
Invalid request. Check locator is specified correctly.

我有 TeamCity 9.1.6 版。TeamCity REST API BuildLocator文档说:

tags: - ","(comma) - 构建标签的分隔列表(仅返回包含所有指定标签的构建)

因此,我尝试通过 2 个或更多这样的标签来选择构建。这不行吗?

我做错了什么?如何通过 2 个或更多标签获得最新版本?

4

3 回答 3

3

我偶然找到了通过两个或更多标签构建的方法。

解决方案:以这种方式使用构建定位器:tags:(one-tag,two-tag,three-tag,etc-tag)

我不确定这是正确的解决方案。如果正确,JetBrains 只是忘记更新 TC REST API 的文档。或者它只是 TeamCity 内部的东西。我在对文档的评论中询问了这里

于 2016-07-15T10:41:51.710 回答
0

上述任何一种解决方案都适用于获取具有多个标签的构建。这个现在是遗产:tags:(one-tag,two-tag,three-tag,etc-tag). 当前文档建议这样做:tag:one-tag,tag:two-tag

不幸的是,您不能使用多个“非”标记子句(在旧语法或当前语法中)。

如果您尝试在遗留语法中使用多个“not”标记子句,您只会得到一个糟糕的结果——即一个或多个只排除一个排除标记的构建;如果您使用当前语法,则会收到 400 错误请求,但有以下异常:“定位器中仅支持单个 'not' 维度。”

于 2020-08-12T23:43:30.937 回答
0

从 Teamcity 10 开始,您还可以只列出几个标签子句(或“非”标签子句),例如

http://server/guestAuth/app/rest/builds?locator=defaultFilter:false,tag:sel,not:tag:unres

奇怪的是,我还没有找到一种方法来选择具有多个标签中的任何一个的构建。

于 2020-07-08T10:56:48.463 回答