4

我们将Sinopia用于我们的 npm 存储库,并且凭证(Home 或当前目录中的 .npmrc 文件)是 nec。构建......直到今天,我当然避免在代码中保留这些凭据,并且还通过传递使用 .npmrc 凭据文件的内容设置的 env var 将它们排除在 docker 镜像层之外. 然后在构建期间:

RUN cat $NPMRC>.npmrc && npm install ; rm .npmrc

......一次运行避免了一层坚持其中的秘密......

但我正在尝试使用 YAML 文件设置容器构建请求来设置环境。var 但失败。build-request.yaml 必须在代码中,所以我不能把它放在那里,我试图在--build-arg NPMRC="$(<.npmrc)"从存储桶复制它之后添加......没有错误,但身份验证失败

我正在尝试使用这样的咒语创建构建参数: [..., '--build-arg', 'NPMRC=\""$(< ./.npmrc)"\"', ....] 这在构建历史中显示为

... build --build-arg "NPMRC=\""$(cat ./.npmrc)"\"" -t

...如果 bash 像我认为应该的那样掌握子外壳,那么哪个 afaict 是正确的:

echo "NPMRC=\""$(cat ./.npmrc)"\"" -> NPMRC="_auth=...."

寻找其他人可能已经找到的解决方案

4

1 回答 1

0

我认为这个页面是正确的,所以我会说参考它来回答我自己的问题是安全的(我不会接受,我猜?):

https://cloud.google.com/container-builder/docs/tutorials/using-encrypted-files

摘要: 使用云密钥管理服务加密 .npmrc 并将加密文件提交到 src 主目录(或复制到存储桶并添加 gsutil 构建步骤).. 然后将解密添加为构建步骤: steps: - name: gcr.io/cloud-builders/gcloud args: - kms - decrypt - --ciphertext-file=npmrc.enc - --plaintext-file=.npmrc - --location=global - --keyring=[KEYRING-NAME] - --key=[KEY-NAME]

于 2017-07-22T03:28:21.933 回答