Как получить сборки, указав несколько тегов с помощью TeamCity REST API?

У меня есть несколько сборок. Каждая сборка имеет два тега. Теги показывают название и версию модуля. Так что теги, такие как one-module а также 1.2.3 или же two-module а также 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-module а также 1.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: - "," (запятая) - разделенный список тегов сборки (возвращаются только сборки, содержащие все указанные теги)

Итак, я пытаюсь выбрать сборку по 2 или более тегам, как это. Это не работает?

Что я делаю не так? Как я могу получить последнюю сборку по 2 или более тегам?

1 ответ

Я случайно нашел способ получить сборку двумя или более тегами.

Решение: используйте локатор сборки следующим образом: tags:(one-tag,two-tag,three-tag,etc-tag)

Я не уверен, что это правильное решение. Если это правильно, JetBrains просто забыл обновить документы для TC REST API. Или это просто что-то внутреннее для TeamCity. Я спрашивал об этом здесь в комментариях к документам.

Начиная с Teamcity 10, вы также можете просто перечислить несколько предложений тегов (или предложений тегов not), например

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

Как ни странно, я не нашел способа выбрать сборки с каким-либо из нескольких тегов.

Любое из вышеперечисленных решений будет работать для получения сборок с несколькими тегами. Теперь это унаследованное:tags:(one-tag,two-tag,three-tag,etc-tag).Текущие документы рекомендуют делать это следующим образом:tag:one-tag,tag:two-tag

К сожалению, вы не можете использовать более одного предложения тега "not" (ни в устаревшем, ни в текущем синтаксисе).

Если вы попытаетесь использовать более одного предложения тега "not" в устаревшем синтаксисе, вы просто получите плохой результат - то есть сборку или сборки, которые исключают только один из исключенных тегов; если вы используете текущий синтаксис, вы получите 400 неверный запрос со следующим исключением: "В локаторе поддерживается только одно измерение" не "".

Другие вопросы по тегам