我有一个云构建步骤,该步骤运行带有以下图像的2 gsutil命令:google/cloud-sdk:300.0.0-alpine.
在过去的几周中,我们注意到在某些情况下(随机运行的〜15%),第二个gsutil命令会收到以下错误:AccessDeniedException: 403 read-782@support-199113.iam.gserviceaccount.com does not have storage.objects.list access to the Google Cloud Storage bucket.
我不知道该服务帐户和项目ID是什么(support-199113)。 重新运行构建通常可以正常工作。 第一个gsutil命令总是成功。
这是步骤:
- name: 'google/cloud-sdk:300.0.0-alpine'
id: 'Loading gradle cache'
entrypoint: 'sh'
args:
- '-c'
- |
fileName=${_IMAGE}_gradle_cache.tar.gz
if gsutil -q stat gs://gradle_cache_${PROJECT_ID}/${fileName}; then
echo 'Gradle cache found'
cd /
gsutil -m cp gs://gradle_cache_${PROJECT_ID}/${fileName} ${fileName}
tar -xpzf ${fileName}
else
echo 'Gradle cache not found'
fi
volumes:
- name: 'gradle_cache'
path: /root/.gradle
waitFor: ['-']
timeout: 60s
顺便说一句,删除第一个gsutil命令即可解决问题