如何解决如何跨Google Cloudbuild中的后续构建步骤包括Docker步骤访问内容
在Google Cloud Platform中,在多阶段的CloudBuild过程中,可以使用共享的/workspace
从一个构建步骤到下一个构建步骤访问内容。
例如,以下cloudbuild.yaml将打印“ hello world”,从第一步开始就可以访问文本hello。
steps:
- name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args: [ '-c'," echo world > sample.txt" ]
- name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args: [ '-c',"echo hello $( < sample.txt)" ]
但是,当涉及到在docker构建步骤中访问此内容时,此方法似乎不起作用。在docker build步骤中似乎没有一种访问文件的方法。
以下步骤作为上述步骤之后的第三步执行时,将执行Dockerfile,但似乎没有使sample.txt文件可用于其中的命令。
# Build the container image
- name: gcr.io/cloud-builders/docker
args: ['build','-t','repositoryname:latest','.']
我尝试了以下操作:
- 在容器内查找名为工作区的默认目录,无济于事。
- 创建一个跨所有步骤共享的自定义卷(该自定义卷在Dockerfile范围内似乎不可访问。
cloudbuild中是否可以通过一系列步骤(包括docker步骤)逐步构建内容?如果是这样,怎么办?
更新
实际上,这些文件确实保留在工作区环境中。我的问题是无法按以下方式在build命令中使用文件的内容。
# Build the container image
- name: gcr.io/cloud-builders/docker
args: ['build','--build-arg','GITHUB_AUTH_TOKEN=$( < sample.txt)','$_REPO_PATH/$_PROJECT_ID/$_REPO_NAME:$_TAG_NAME','.']
在第一步中,我实际上是使用gcloud从机密管理器中获取机密,然后我想将此作为参数传递给docker构建过程。 我无法使上述构建步骤正常工作,然后读取命令替换对docker参数无效吗?
解决方法
问题来自args
解释。这样写,没有任何arg评估。像这样使用脚本模式
# Build the container image
- name: gcr.io/cloud-builders/docker
entrypoint: "bash"
args:
- "-c"
- |
docker build --build-arg GITHUB_AUTH_TOKEN=$( < sample.txt) -t $_REPO_PATH/$_PROJECT_ID/$_REPO_NAME:$_TAG_NAME .
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。