Шаг bat в Jenkinsfile обрабатывает команду Curl по-разному, если она выполняется непосредственно в командной строке

Я хочу загрузить файл tar.gz с помощью curl, и это команда, которую я попробовал с помощью cmd моего Windows (локально):

curl --user admin:admin --location "https://my_api/doxy_manual.tar.gz" --output doxy_manual.tar.gz 

И это работает, поскольку я могу открыть файл, если дважды щелкну по нему.

К сожалению, если я вставлю ту же самую команду в свой Jenkinsfile на работающий экземпляр Jenkins на сервере Windows:

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
    
    post {
        always {
            script {
                bat """
                    curl --user admin:admin --location "https://my_api/doxy_manual.tar.gz" --output doxy_manual.tar.gz
                """
            }
        }
    }
}

При двойном щелчке по загруженному файлу я получаю следующую ошибку:

7-zip: невозможно открыть файл «C:\Users\john\Downloads\doxy_manual.tar.gz» как архив [gzip]. Ошибка: не в архиве

Что мне не хватает?

"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
0
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вероятно, вы захотите посмотреть HTTP Request Plugin и использовать uploadFile для POST-запроса. Лично я не вижу проблемы с curl, только если вы хотите что-то сделать с ответом программно. В этом случае может оказаться полезным использование метода на основе DSL.

Я отредактировал свое сообщение, добавив дополнительную информацию об ошибке. Пожалуйста, проверьте это

tail 28.06.2024 09:04
Ответ принят как подходящий

Я добавил флаг --verbose к команде curl I и понял, что curl заменяет пробелы в моем URL-адресе на 0 вместо %20, и поэтому я столкнулся с Error 404 вместо 200

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