【问题标题】:Installing google-chrome in cloud build step not shared across steps (using volumes)在未跨步骤共享的云构建步骤中安装 google-chrome(使用卷)
【发布时间】:2018-12-20 15:08:06
【问题描述】:

我在安装可跨步骤共享的 google chrome 时遇到问题。我的 cloudbuild.yaml 看起来像这样:

- name: 'ubuntu'
  args: ['bash', 'tools/download-chrome.sh']
  volumes:
  - name: 'bin'
    path: '/usr/bin'
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'install-all-ci']
- name: 'gcr.io/cloud-builders/npm'
  args: ['test']
  volumes:
  - name: 'bin'
    path: '/usr/bin'

第一步下载chrome,调用which google-chrome返回/usr/bin/google-chrome。在最后一步中执行相同操作不会返回任何内容。


我还尝试将卷添加到中间的步骤并向上移动该步骤(因为将它放在安装步骤中由于某种原因破坏了 git。我认为 /usr/bin 不是一个很好的共享目录,因为卷得到删除了吗?


尝试 3 正在做类似的事情:

apt-get download -y google-chrome-stable \
      --no-install-recommends \
    && dpkg -i --force-all --root=/workspace/chrome /workspace/google-chrome-stable*.deb \

但我收到以下错误:dpkg: error: unable to access dpkg status area: No such file or directory。我试过mkdir /workspace/chrome,但这并没有解决问题。

【问题讨论】:

    标签: google-chrome testing google-cloud-platform continuous-integration google-cloud-build


    【解决方案1】:

    我想知道/usr/bin目录是否已经被docker镜像使用,在这种情况下你可能无法覆盖它?

    您可以探索的另一个解决方案是拥有一个包含 npm 和 chrome 工具的 docker 映像,因此您不必在每次构建时下载/安装它。

    最好, 菲利普

    【讨论】:

    • 这是我的下一个想法,尽管因为它是 docker,测试经常更改,因此该步骤无效,并且必须经常为 chrome 下载,从而减慢构建速度。我认为..
    • 你的意思是chrome经常更换吗?在这种情况下,您可以在每次构建时重新构建构建器(确保正确使用 docker 缓存,因此如果没有更改,它会很快):github.com/Philmod/parcel/blob/gcb/cloudbuild.yaml
    • 我的意思是我的测试经常改变,导致 docker 每次都重新下载和安装 chrome,即使那部分没有改变。
    • 您的测试不应修改构建器映像,因此不应触发重建。在我发送的示例中,我使用 cache-from 来避免每次都重新构建构建器。
    猜你喜欢
    • 2019-12-04
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2020-02-02
    • 1970-01-01
    • 2022-06-11
    相关资源
    最近更新 更多