jenkins #jenkins-pipeline #jenkins-plugins #artifactory #jenkins-job-dsl
#Дженкинс #дженкинс-трубопровод #дженкинс-плагины #artifactory #дженкинс-задание-dsl
Вопрос:
Я разрабатываю декларативный конвейер Дженкинса. У меня есть версия в качестве параметра, и в зависимости от этой версии я хотел бы знать, существует ли определенная папка в Jfrog Artifactory, прежде чем загружать ее. У меня установлен плагин Jenkins Artifactory. Есть ли способ, которым я могу узнать эту информацию перед ее загрузкой?
Редактировать: я понял, что мой вопрос был немного вырван из контекста. В конце концов, то, что я хочу сделать, это загрузить артефакт. Но в случае, если артефакт уже существует, я хотел бы предупредить пользователя, если он захочет продолжить. И мне было интересно, есть ли решение, отличное от загрузки артефакта, чтобы проверить, существует ли он, выдача предупреждения в зависимости от того, была ли загрузка успешной, и после этого загрузка артефакта.
Комментарии:
1. По какой причине вы хотите проверить, существует ли файл перед загрузкой? Почему бы просто не попробовать загрузить?
2. @yahavi просто отредактировал ответ, чтобы дать больше контекста.
Ответ №1:
Вы можете использовать jfrog rt s
команду командной строки JFrog для поиска файлов в Artifactory.
Добавление --count
в команду подсчитывает общее количество элементов, найденных в Artifactory по указанному пути. Например, предположим, вы хотите проверить, существует ли файл с именем f.zip
в generic-local
репозитории, в разделе a/b/
путь, выполните следующую команду
jfrog rt s generic-local/a/b/f.zip --count
Вывод, вероятно, будет
[Info] Searching artifacts...
[Info] Found 0 artifacts.
0
Обратите внимание, что в приведенном выше примере он вернул 0. Если бы файл существовал, он вернул бы 1.
Поскольку в стандартный вывод отправляется только последняя строка вывода, вы можете получить ее, например, записав в файл.
Ответ №2:
Одним из вариантов было бы использовать curl, как если бы вы загружали файл. Но вместо того, чтобы вызывать запрос GET, просто запустите запрос HEAD.
curl -X HEAD ...
curl --head ...
Метод HEAD идентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело сообщения в ответе. Метаинформация, содержащаяся в заголовках HTTP в ответ на запрос HEAD, ДОЛЖНА быть идентична информации, отправленной в ответ на запрос GET. Этот метод можно использовать для получения метаинформации о сущности, подразумеваемой запросом, без передачи тела сущности itself.https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html