Трубопровод jenkins - загрузка в artifactory: не удалось развернуть файл / родительский файл должен быть папкой

У меня есть задание Jenkins, которое создает zip-файл, который я хочу обновить в Artifactory. У меня проблема с настройкой загружаемой версии артефакта.

По соглашению я использую метку времени версии. Я хочу загрузить файл на my/group/timestamp/file.zip. URL-адрес файла будет http://ArtifactoryAdress/foo/my/group/timestamp/file.zip

Вот мой код конвейера

def serverArtifactory = Artifactory.server 'NameArtificatory'
def uploadSpec = """{
      "files": [
        {
          "pattern": "file.zip",
          "target": "my/group/${timestamp}/"
        }
     ]
    }"""
serverArtifactory.upload(uploadSpec)

Я получаю следующую ошибку от Jenkins Job

java.lang.RuntimeException: java.io.IOException: Failed to deploy file. Status code: 400 Response message: Artifactory returned the following errors: Parent my/group/timestampValue must be a folder Status code: 400

Я просмотрел buildInfo, но не смог найти, как установить версию.

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

Что-то происходит помимо сообщения об ошибке? Мне это кажется очевидным.

Matt Schuchard 10.08.2018 16:41

Убедитесь, что вы не создали файл «timestampValue» по шаблону «my / group». В этом случае просто удалите файл, и все должно работать нормально.

Dima Nevelev 11.08.2018 21:02

Спасибо, я не понял, что файл уже существует (из предыдущих тестов)

Flows 13.08.2018 08:44
1
3
2 547
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Не забывайте, что ${} по-прежнему хорош. Я использовал код ниже, и он работает

def uploadSpec = """{
    "files": [
    {
    "pattern": "**/target/*.war",
    "target": "local-release/${APP_REPO}/${version.trim()}/${timestamp}.zip"
    }
    ]}"""
server.upload(uploadSpec)

@Редактировать. И я просто подумал об этом. Распечатайте пожалуйста свой ${timestamp}. Возможно, он содержит символы с пробелами или что-то подобное, что Artifactory не разрешено в имени каталога. Попробуйте обрезать свой timestamp.trim()

Я использую $ {}, но забыл об этом в своем вопросе. Я редактировал. Разница, которую я вижу с вами, - это "/" в точке и цели, но у меня все еще есть та же проблема с ней

Flows 10.08.2018 15:28

Я должен отредактировать свой ответ, он был для нескольких файлов. Для одного файла используйте путь с *.zip

3sky 10.08.2018 15:35
Ответ принят как подходящий

Наконец, эта ошибка ясна и проста.

Как уже упоминалось, файл с путем my/group/timestampValue уже существует. Вы должны удалить его в Artifactory.

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