我打算将我的 npm token 传递给 gcp 云构建,
这样我就可以在多阶段构建中使用它来安装私有(private) npm 包。
我有以下删节的 Dockerfile:
FROM ubuntu:14.04 AS build
ARG NPM_TOKEN
RUN echo "NPM_TOKEN:: ${NPM_TOKEN}"
以及以下删节的 cloudbuild.yaml:
---
steps:
- name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args: [ '-c', 'gcloud secrets versions access latest --secret=my-npm-token > npm-token.txt' ]
- name: gcr.io/cloud-builders/docker
args:
- build
- "-t"
- gcr.io/my-project/my-program
- "."
- "--build-arg NPM_TOKEN= < npm-token.txt"
- "--no-cache"
我的 cloudbuild.yaml 基于 documentation ,但似乎我无法将两个和两个放在一起,因为表达式:“--build-arg NPM_TOKEN= < npm-token.txt”不起作用。
当我直接传入 npm token 时,我已经测试了 DockerFile,它可以工作。我只是在将 gcloud secret 中的 token 作为构建参数传递给 docker 时遇到了麻烦。
非常感谢您的帮助!
最佳答案
您的目标是将 secret 文件内容放入构建参数中。因此,您必须使用 NPM_TOKEN="$(cat npm-token.txt)"
读取文件内容。或 NPM_TOKEN="$(< npm-token.txt)"
.
name: gcr.io/cloud-builders/docker
entrypoint: 'bash'
args: [ '-c', 'docker build -t gcr.io/my-project/my-program . --build-arg NPM_TOKEN="$(cat npm-token.txt)" --no-cache' ]
注意: gcr.io/cloud-builders/docker 但是使用 exec 入口点形式。因此,您将入口点设置为 bash。
另请注意,您将 secret 保存到构建 workspace (/工作区/..)。这也允许您将 secret 作为文件复制到您的容器中。
FROM ubuntu:14.04 AS build
ARG NPM_TOKEN
COPY npm-token.txt .
RUN echo "NPM_TOKEN:: $(cat npm-token.txt)"
关于docker - GCP Cloud 构建密码到 docker arg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62285544/