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

如何使用Jenkins pipeline脚本将GitHub提交的文件下载至工作区

问题原因

你遇到的failed writing body (0 != 1364)错误由以下3个问题共同导致:

  • -o参数后直接传入了$WORKSPACE,Jenkins工作区是目录,curl无法将返回内容直接写入目录,需要指定完整的文件名路径
  • 你使用的是GitHub的blob预览页面地址,返回的是HTML网页内容,不是原始的test.csv文件内容
  • 请求头-H github-ssh-key的写法不符合curl的GitHub认证规则,私有仓库会直接返回404/403响应,写入自然失败

正确实现方案

方案1:公开仓库(无需认证)

直接将链接替换为GitHub raw原始文件地址,同时指定完整的输出文件名即可:

stage('Download github file ')
{
 steps{
    script{
        sh'''
         # 把链接中的blob替换为raw即可获取原始文件地址,-o参数指定完整的文件保存路径
         curl -o $WORKSPACE/test.csv -L 'https://github.com/<你的用户名>/<你的仓库名>/raw/1.2.0/test.csv'
      '''               
      }
  }
}

方案2:私有仓库(需认证,推荐使用个人访问令牌PAT)

首先在GitHub后台生成具备仓库读取权限的PAT,将PAT存储到Jenkins凭据中,假设你保存的凭据ID为github_pat,写法如下:

stage('Download github file ')
{
 steps{
    withCredentials([string(credentialsId: 'github_pat', variable: 'GITHUB_PAT')]) {
        script{
            sh'''
             curl -H "Authorization: token ${GITHUB_PAT}" -o $WORKSPACE/test.csv -L 'https://github.com/<你的用户名>/<你的仓库名>/raw/1.2.0/test.csv'
          '''               
          }
      }
  }
}

可选稳定方案(适合多文件下载场景)

如果需要下载多个文件或者整仓库内容,直接用Jenkins内置的git步骤更稳定,无需处理curl的各类参数问题:

stage('Checkout github repo')
{
 steps{
    // 配置好GitHub SSH凭据后直接拉取对应分支代码,执行完成后仓库所有文件都已存放在$WORKSPACE下
    git branch: '1.2.0', url: 'git@github.com:<你的用户名>/<你的仓库名>.git'
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:54:03