我打算将我的npm令牌传递给gcp cloud build,这样我就可以在多阶段构建中使用它来安装私有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"
我基于documentation构建我的cloudbuild.yaml,但似乎我无法将两者放在一起,因为表达式:“--documentation-arg NPM_TOKEN= < npm-token.txt”不起作用。我已经测试了DockerFile,当我直接传入npm令牌时,它可以工作。我只是在传递一个来自gcloud secrets的令牌作为docker的构建参数时遇到了麻烦。
非常感谢您的帮助!
发布于 2020-06-09 19:41:20
您的目标是将机密文件内容放入build参数中。因此,您必须使用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。
还要注意,您将秘密保存到构建工作区(/ workspace /..)。这还允许您将密钥作为文件复制到容器中。
FROM ubuntu:14.04 AS build
ARG NPM_TOKEN
COPY npm-token.txt .
RUN echo "NPM_TOKEN:: $(cat npm-token.txt)"
发布于 2020-06-09 19:46:05
我不会像你那样写你的第二步,但是像这样:
- name: gcr.io/cloud-builders/docker
entrypoint: "bash"
args:
- "-c"
- |
build -t gcr.io/my-project/my-program . --build-arg NPM_TOKEN=$(cat npm-token.txt) --no-cache
https://stackoverflow.com/questions/62285544
复制相似问题