Артефактный API AQL с переменными среды Jenkins - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь выполнить следующий код в задаче Jenkins после сборки:

curl -H "X-JFrog-Art-Api:***********" -X POST https://artifactory_url/artifactory/api/search/aql -H "Content-Type: text/plain" -d 'items.find({"repo":{"$eq":"REPO"},"name":{"$match":"*${env.SUBSYSTEM}*"},"name":{"$nmatch":"*pdf*"}}).include("repo","name","path")'

(здесь он разбит на несколько строк для удобства чтения):

curl -X POST https://artifactory_url/artifactory/api/search/aql \
     -H "X-JFrog-Art-Api:***********" \
     -H "Content-Type: text/plain" \
     -d 'items.find( \
         {"repo":{"$eq":"REPO"}, \
          "name":{"$match":"*${env.SUBSYSTEM}*"}, \
          "name":{"$nmatch":"*pdf*"}}).include("repo","name","path")'

Это не работает, потому что переменная окружения ${env.SUBSYSTEM} не решена. Есть ли в любом случае для использования переменных в curl с aql?

Спасибо и всего наилучшего

1 Ответ

0 голосов
/ 03 мая 2018

Вероятно, это не разрешает переменную среды, потому что вы заключаете этот фрагмент строки в одинарные кавычки ('), которые сохраняют буквальное значение каждого символа в кавычках (то есть переменные не разрешаются). Вы можете использовать двойные кавычки (") с экранированием, которые будут выглядеть так:

... -d "items.find({\"repo\":{\"$eq\":\"REPO\"},\"name\":{\"$match\":\"*${env.SUBSYSTEM}*\"},\"name\":{\"$nmatch\":\"*pdf*\"}}).include(\"repo\",\"name\",\"path\")"

Или, возможно, просто вычеркнуть переменную окружения из кавычек:

... -d 'items.find({"repo":{"$eq":"REPO"},"name":{"$match":"*'${env.SUBSYSTEM}'*"},"name":{"$nmatch":"*pdf*"}}).include("repo","name","path")'
...