android - 一步使用两个 CloudBuild 映像
问题描述
我遇到了一个问题,我需要在同一个 CloudBuild“步骤”中同时运行 Java+Android 和 NodeJS。
我目前的情况是我正在尝试react-native
在 Google CloudBuild 中构建一个项目。这样做的问题是,在.gradlew
调用带有节点脚本的 Android 捆绑时。
我尝试使用这样的 CloudBuild 步骤配置:
{
"name": "gcr.io/$PROJECT_ID/android:29",
"args": ["./gradlew", "bundleProductionRelease"]
}
但这导致了这个错误:
Cannot run program "node": error=2, No such file or directory
当然,这是有道理的,因为这个容器没有理由安装 NodeJS。
解决方案
首先,在 Cloud Build 上,每一步只能运行 1 个容器。在这里,您的问题不是要运行 2 个容器,而是要在同一个容器中嵌入 2 个应用程序。
对于这 2 个解决方案:
- 你找到一个容器,里面装了所有你想要的东西
- 您使用基本容器并自行在其上安装缺少的应用程序
- 要么,就在安装后按原样使用它
- 或者,您可以创建一个构建管道,从基础构建您自己的容器(自定义构建器),并安装缺失的部分并将其存储在 GCR 中。然后,对于您的应用程序的构建,您可以直接使用这个自定义容器
要安装缺少的部分,您可以这样做
- name: "gcr.io/$PROJECT_ID/android:29"
entrypoint: "bash"
args:
- "-c"
- |
curl -sL https://deb.nodesource.com/setup_12.x | bash -
apt-get install -y nodejs
node -v #optional, test the installed version
./gradlew bundleProductionRelease
}
注意:您可以在此处找到基本映像的正确安装。我在示例中使用标准的 Linux Ubuntu 安装
推荐阅读
- c# - 为集合中的多个对象创建使用块
- mysql - Dream Weaver 未检测到数据库
- encryption - 如何将 GPG 文件加密为与默认不同的标准
- webpack - webpackChunkName 在 CRA 应用程序中没有得到尊重
- html - Reactjs İmage 源看起来像 src="[object Module]"
- r - 如何根据R中字典中的单词标记文本是正面的还是负面的?
- kubernetes - Kubernetes:我们需要在 apiserver manifest 中设置 http_proxy 和 no_proxy 吗?
- excel - 我需要一个 VBA 代码,在 Userform 将日期输入数据库后,刷新单元格的方式与进入它并按 Enter 的方式相同
- java - 如何将异构 JSON 数组映射到 Java 对象?
- scala - 带有自定义验证的 Play Framework JSON 自动映射