如何跨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参数无效吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)