在 Cloud Build 过程中使用来自 Google Secret Manager 的 NPM 令牌

Using NPM token from Google Secret Manager during Cloud Build process

Cloud Build Google 可以在安装过程中使用 NPM 令牌吗?

我正在跨应用程序使用私有 NPM 包,我知道我们可以 place the token within an .npmrc file

//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>

但我想将令牌保留在代码库之外并使用 SM 来实现它的目的。

但这似乎不可能,文档似乎也没有涵盖这一点。

同时,发布 sethvargo 和 guillaume blaquiere 提出的解决方案以提高知名度。

您可以将令牌值设置为环境变量,NPM_TOKEN。在这种情况下,您可以使用原生 Cloud Build + Secret Manager 集成来注入值:cloud.google.com/build/docs/securing-builds/use-secrets

如果 NPM_TOKEN 解决方案不起作用,您仍然可以使用 Secret Manager 和 Cloud Build 加载您的令牌,用脚本编写您的 .npmrc 文件,然后 运行 你的构建。

为此我不得不请有经验的 Secret Manager 帮忙,但仍然花了 20 多个小时。

假设您具备 GCP 和 Secret Manager 的一般知识并且手头有 NPM 令牌(可在 npmjs 找到。com/settings/USERNAME/tokens)

  1. 创建一个名为 NPM_TOKEN 的 Secret Manager 密钥及其值 作为私有 NPM 包的 automation token
  2. 在 cloudbuild.yaml 构建过程中创建一个 .npmrc
steps:
  - name: bash
    args: ['-c', 'echo //registry.npmjs.org/:_authToken=$$NPM_TOKEN > .npmrc'] <-- main takeaway
    secretEnv: ['NPM_TOKEN']
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    args: ['gcloud', 'app', 'deploy']
availableSecrets:
  secretManager:
    - versionName: projects/$PROJECT_ID/secrets/NPM_TOKEN/versions/latest
      env: 'NPM_TOKEN'

现在云构建过程有一个 NPM_TOKEN 值可以拉入私有 NPM 包。