You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkinsfile中bat执行curl下载tar.gz失败,本地CMD正常

问题:Jenkins中curl下载的tar.gz文件无法正常解压

问题详情

在本地Windows CMD中执行以下curl命令,能正常下载doxy_manual.tar.gz文件且可正常解压:

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

但将相同命令放到Windows服务器的Jenkins实例中,通过Jenkinsfile的bat步骤执行后,下载的文件无法用7-zip打开,报错:

7-zip: Cannot open file 'C:\Users\john\Downloads\doxy_manual.tar.gz' as archive [gzip]. Error: is not archive

对应的Jenkinsfile代码如下:

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
                """
            }
        }
    }
}

可能的原因及解决办法

  • curl文本模式损坏二进制文件:Windows环境下部分curl版本默认用文本模式传输,会破坏tar.gz这类二进制文件。添加--binary参数强制二进制传输:
    curl --binary --user admin:admin --location "https://my_api/doxy_manual.tar.gz" --output doxy_manual.tar.gz
    
  • 路径解析异常:Jenkins执行bat时的工作目录可能和预期不符,或路径解析错误导致文件写入异常。指定绝对输出路径规避问题:
    curl --user admin:admin --location "https://my_api/doxy_manual.tar.gz" --output "C:\Jenkins\workspace\你的任务名\doxy_manual.tar.gz"
    
  • 下载内容错误:可能重定向过程中认证失效,导致下载的是错误内容(比如401错误页面)。添加--verbose参数查看curl执行细节,确认响应状态和文件大小是否正常:
    curl --verbose --user admin:admin --location "https://my_api/doxy_manual.tar.gz" --output doxy_manual.tar.gz
    
  • bat脚本语法问题:多行bat脚本的引号可能被Jenkins解析异常,尝试将命令写成单行:
    bat 'curl --user admin:admin --location "https://my_api/doxy_manual.tar.gz" --output doxy_manual.tar.gz'
    
  • 权限不足导致文件写入不完整:Jenkins服务运行账户可能没有目标路径的读写权限,导致文件未完全写入。检查Jenkins工作目录的权限,确保运行用户有读写权限。

内容的提问来源于stack exchange,提问作者tail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:57:09