#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")