我们将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像我认为的那样持有subshel​​l,则哪个aafict是正确的:

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

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

最佳答案

我认为此页面符合您的需求,因此我可以安全地回答自己的问题(我不会接受,我猜是吗?):

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

摘要:
使用Cloud Key Management Service加密.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]

10-01 00:47