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

Drone Pipeline使用gcs插件上传文件至GCS的token配置问题

Drone GCS插件token参数配置方案

你遇到的报错和传了base64编码的密钥直接相关,该插件不需要传入手动生成的oauth2 token,也不需要对Service Account密钥做base64编码,具体规则和配置方法如下:

报错根因

你之前参考的App Engine插件要求传入base64编码后的SA密钥,但官方GCS插件的token参数接收的是Service Account JSON密钥的原始明文内容,传入base64字符串后,插件会直接把该字符串当做JSON格式解析,遇到base64字符里的'e'不符合JSON开头规范,就会抛出你看到的failed to authenticate token: invalid character 'e' looking for beginning of value1错误。

正确配置步骤

  • 提前确认Service Account权限:给绑定GCS存储桶的服务账号分配Storage Object Admin角色即可,满足上传、覆盖、列取产物的权限需求,不要过度授权。
  • 存储密钥为Drone Secret:不要对下载的JSON密钥文件做任何编码、转义操作,直接将文件内的完整原始内容存为仓库级/组织级的Drone Secret,推荐直接用Drone命令行操作避免手动复制引入多余空格、换行、BOM头:
    drone secret add --repository 你的代码仓库路径 --name gcs_sa_key --data @本地SA密钥文件路径.json
    
  • 编写流水线配置:在GCS上传步骤中直接引用该Secret传入token参数,参考配置如下:
    kind: pipeline
    name: npm-build-publish
    steps:
      - name: 构建npm项目
        image: node:20
        commands:
          - npm ci
          - npm run build
      - name: 上传产物到GCS
        image: plugins/gcs
        settings:
          bucket: 你的目标GCS存储桶名称
          source: dist/**/* # 对应npm构建输出的产物目录
          target: /assets/ # 存储桶内存放产物的目标路径
          token:
            from_secret: gcs_sa_key
    

注意事项

  • 插件内部会自动使用传入的SA密钥申请有效期内的oauth2凭证完成认证,不需要你手动生成oauth2 token,自行生成的token会存在有效期短、权限范围不匹配的问题,反而会导致认证失败。
  • 如果还是报JSON解析错误,检查你存入Secret的密钥内容是否完整,有没有遗漏JSON的大括号、多复制了终端输出的其他字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:24:13