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

如何在Bitbucket Pipelines中访问Google Secret Manager存储的环境变量

可以实现,不需要把Google Secret Manager里的密钥硬编码到Bitbucket仓库配置中,通过GCP服务账号做鉴权就能在Pipeline运行时拉取所需密钥,具体操作步骤如下:

前置配置
  • 在GCP控制台新建独立服务账号,只给这个账号分配Secret Manager Secret Accessor角色,权限范围精确绑定到测试用例要用到的具体密钥上,别给整个项目的宽泛权限,出问题影响面太大。
  • 给这个服务账号生成JSON格式的身份密钥,把完整JSON内容存成Bitbucket工作区/仓库的加密变量,变量名可以设为GCP_SA_KEY,记得打开变量的「保密」开关,防止值被打印到Pipeline日志里泄露。
  • 顺便把你的GCP项目ID也存成Bitbucket加密变量,变量名设为GCP_PROJECT_ID,后面配置直接复用,不用硬写在pipeline文件里。
Pipeline配置逻辑

不用改你原有测试用例的核心代码,只要在测试执行步骤前加鉴权和密钥拉取的逻辑就行,示例配置片段:

pipelines:
  default:
    - step:
        name: 执行测试用例
        image: google/cloud-sdk:latest # 直接用预装了gcloud SDK的官方镜像,省掉自己装SDK的步骤
        script:
          # 把服务账号密钥写到临时文件
          - echo "$GCP_SA_KEY" > /tmp/sa-key.json
          # 激活服务账号身份
          - gcloud auth activate-service-account --key-file=/tmp/sa-key.json
          - gcloud config set project "$GCP_PROJECT_ID"
          # 按需拉取测试依赖的所有密钥,注入为当前步骤的环境变量
          - export TEST_API_KEY=$(gcloud secrets versions access latest --secret="test-api-key")
          - export TEST_DB_PASSWORD=$(gcloud secrets versions access latest --secret="test-db-password")
          # 用完立刻删掉临时密钥文件,避免残留
          - rm -f /tmp/sa-key.json
          # 执行你原来的测试命令就行,测试进程能直接读到上面注入的环境变量
          - pytest # 替换成你实际用的测试执行命令,比如npm test、go test之类的
可选优化
  • 如果你不想用gcloud CLI拉密钥,也可以在测试代码里直接引入对应语言的Google Secret Manager SDK,用同一个服务账号初始化客户端,代码运行时直接拉密钥,鉴权逻辑和命令行方案完全一致。
  • 要是怕密钥更新影响测试稳定性,可以把命令里的latest换成固定的密钥版本号,每次测试用的密钥版本就不会变。
  • 可以加个简单的判断逻辑,要是密钥拉取失败直接终止Pipeline,不用等测试跑半天报密钥不存在的错,省时间。

安全提醒:绝对不要把服务账号的JSON密钥提交到代码仓库,所有敏感信息都存在Bitbucket的加密变量里;服务账号只给必要的最小权限,别乱绑Editor、Owner这类高权限角色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:24:21