【发布时间】:2021-08-03 08:26:08
【问题描述】:
我的 .gitlab-ci.yml 不仅需要调用gcloud cli,还需要调用firebase cli。
image: google/cloud-sdk:latest 允许我调用gcloud cli,但不能调用firebase cli。
image: devillex/docker-firebase 允许我调用firebase cli,但不能调用gcloud cli。
我已尝试按照firebase's CI/CD instructions 安装firebase CLI,但我收到一个关于似乎需要sudo 的权限的错误。然而,gitlab 甚至不提供sudo,这并不奇怪。
我已尝试搜索 stackoverflow 和 hub.docker.com,但找不到同时提供这两种 CLI 的图像。你知道有哪一个可以同时提供吗?
是否有其他地方我可以搜索或以某种方式进行不同的搜索(例如,某些关键字有助于搜索 docker 图像)?
如果我想尝试将image: google/cloud-sdk:latest 和image: devillex/docker-firebase 组合成一张图片,我会怎么做?第一步是什么?我从来没有制作过 Docker 镜像,更不用说尝试合并两个现有的了。
【问题讨论】:
-
您无法合并两个图像。通常最好的办法是选择其中一个映像,确定它基于哪个 Linux 发行版,然后使用包管理器(
apk用于 Alpine,或apt-get用于 Debian/Ubuntu)安装其他组件. -
有一个 Cloud Build(Google 服务)社区开发的(!)构建器,其中包括 Firebase CLI(不是 Cloud SDK)。因为它是社区开发的解决方案,并且因为它是开源的,所以您可以确信它是一个好的图像,并且您可以验证它的作用。小心使用任意容器。链接:cloud.google.com/build/docs/deploying-builds/…
-
您可以为 Gitlab 构建一个脚本,该脚本使用两个不同的图像(Cloud SDK 和 Firebase),而无需将它们合并为一个。如果您可以按原样使用现有图像,您还可以避免创建和维护自己的图像。
-
感谢@DazWilkin(为 Gitlab 构建一个使用两个不同图像的脚本)实际上是我作为解决方法所做的。它运作良好,但我很想简化它。
-
@DavidMaze 我可以尝试使用
image: google/cloud-sdk:alpine,它可能基于 Alpine。然后我可以使用apk,对吗?但是是否有apk注册表我可以搜索安装firebase CLI 的命令? firebase.google.com/docs/cli#mac-linux-auto-script 有一些非 apk 指令,但它们在 gitlab 上不起作用。他们失败了,因为他们需要 sudo 但 sudo 在 gitlab 上是不允许的。
标签: firebase docker gitlab-ci gcloud