问题描述
在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参数无效吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)