Groovy — Не удается загрузить артефакт в JFrog Artifactory

#jenkins-pipeline #artifactory #jenkins-groovy #jfrog-cli

#дженкинс-конвейер #artifactory #дженкинс-groovy #jfrog-cli

Вопрос:

В приведенном ниже коде:

 def server = Artifactory.server 'server_id';

def uploadSpec = """{
                "files": [{
                    "pattern": "${WORKSPACE}/$repoName/target/$repoName-0.1-$jarType.jar",
                    "target": "libs-release-local/a/b/c/"
                    }
                    ]
            }"""

server.upload(uploadSpec)    
  

server.upload(uploadSpec) не создает путь к репозиторию a/b/c под libs-release-local при первом запуске


Дженкинс подключается к Artifactory с правами администратора

1) Почему приведенный выше код не создает путь к репозиторию для загрузки артефакта в Artifactory?

2) server.upload Использует ли JFrog cli внутренне?

Комментарии:

1. Как диагностировать проблему? Дженкинс не показывает никаких ошибок в выводе на консоль после запуска server.upload(uploadSpec)

Ответ №1:

1) Путь будет создан в репозитории только в том случае, если будет загружен артефакт. Если ошибки не произошло и путь не был создан, я предполагаю, что шаблон не нашел соответствия и артефакты не были загружены.

Что касается вашего комментария, вы можете диагностировать проблему, установив для ‘faillnoop’ значение true, что приведет к сбою сборки, если файлы не будут затронуты:

 server.upload(uploadSpec, true) 
  

Вывод на консоль также будет содержать строку типа «Развертывание артефакта: /path/to /artifact» для каждого загруженного артефакта.

2) Нет, подключаемый модуль Jenkins Artifactory вообще не полагается на JFrog CLI.

Ответ №2:

для этого вы можете использовать REST API jfrog:https://www.jfrog.com/confluence/display/RTF/Artifactory REST API

и используйте curl для размещения вашего артефакта.

например.

 sh("curl -u username:password@ -X PUT "${mavenRepo}/${relativeMavenPath}/${serviceName}/${serviceTag}/${serviceName}-${serviceTag}.jar" -T services.jar")