Google Cloud Build构建Android项目遇Manifest未找到错误求助
解决Google Cloud Build中找不到cloudbuild镜像的问题
错误原因
构建失败的核心问题是gradle-build步骤引用的镜像名称错误:
- 你已成功拉取
eu.gcr.io/$PROJECT_ID/cloudbuild-android:8e70f56镜像,但步骤中错误使用了eu.gcr.io/$PROJECT_ID/cloudbuild(缺少-android后缀,且未指定版本标签),导致Docker无法找到对应镜像的manifest文件。 - 原
cloudbuild.yaml存在缩进格式问题,会导致Cloud Build解析失败。
修正方案
方案1:修正原步骤的镜像引用
将gradle-build步骤中的镜像名称改为已构建的cloudbuild-android镜像,并修复yaml缩进:
# cloudbuild.yaml steps: - name: eu.gcr.io/$PROJECT_ID/cloudbuild-android:8e70f56 id: 'docker-pull' args: ['cp', '-a', '.', '/persistent_volume'] volumes: - name: data path: /persistent_volume - name: gcr.io/cloud-builders/docker id: 'gradle-build' volumes: - name: data path: /persistent_volume args: ['run', '-v', 'data:/workspace', '--rm', 'eu.gcr.io/$PROJECT_ID/cloudbuild-android:8e70f56', '/bin/sh', '-c', 'cd /workspace && ./gradlew mobile:assembleDebug && mv mobile/build/outputs/apk/debug/mobile-debug.apk mobile/build/outputs/apk/debug/$REPO_NAME-$SHORT_SHA-debug.apk && ls -la mobile/build/outputs/apk/debug/$REPO_NAME-$SHORT_SHA-debug.apk'] - name: gcr.io/cloud-builders/gsutil id: 'publish-gsutil' args: ['cp', '/persistent_volume/mobile/build/outputs/apk/debug/$REPO_NAME-$SHORT_SHA-debug.apk', 'gs://eu.artifacts.$PROJECT_ID.appspot.com/android/'] volumes: - name: data path: /persistent_volume timeout: 1200s
方案2:简化构建流程(推荐)
无需通过gcr.io/cloud-builders/docker启动容器,直接用cloudbuild-android镜像作为执行环境,省去中间步骤提升效率:
# cloudbuild.yaml steps: - name: eu.gcr.io/$PROJECT_ID/cloudbuild-android:8e70f56 id: 'gradle-build' args: ['/bin/sh', '-c', './gradlew mobile:assembleDebug && mv mobile/build/outputs/apk/debug/mobile-debug.apk mobile/build/outputs/apk/debug/$REPO_NAME-$SHORT_SHA-debug.apk && ls -la mobile/build/outputs/apk/debug/$REPO_NAME-$SHORT_SHA-debug.apk'] - name: gcr.io/cloud-builders/gsutil id: 'publish-gsutil' args: ['cp', 'mobile/build/outputs/apk/debug/$REPO_NAME-$SHORT_SHA-debug.apk', 'gs://eu.artifacts.$PROJECT_ID.appspot.com/android/'] timeout: 1200s
说明
- 方案2中,Cloud Build会自动将当前代码仓库挂载到镜像的
/workspace目录,无需手动复制到持久化卷,流程更简洁。 - 确保
cloudbuild-android镜像已正确推送到eu.gcr.io/$PROJECT_ID容器注册表中。
内容的提问来源于stack exchange,提问作者viv
相关产品推荐
相关产品推荐

