Halaman ini memberikan strategi pemecahan masalah serta solusi untuk beberapa pesan error umum yang mungkin Anda lihat saat menjalankan build.
Apakah Anda sudah melihat log build?
Gunakan Logging atau log build Cloud Storage untuk mendapatkan informasi selengkapnya tentang error build. Log yang ditulis ke stdout
atau stderr
akan muncul secara otomatis di konsol Google Cloud.
Build manual gagal karena pengguna tidak memiliki akses ke log build
Anda melihat error berikut saat mencoba menjalankan build secara manual:
AccessDeniedAccess denied. [EMAIL_ADDRESS] does not have storage.objects.get access to the Google Cloud Storage object.
Anda melihat error ini karena Cloud Build mengharuskan pengguna yang menjalankan build manual dan menggunakan bucket log Cloud Storage default memiliki peran IAM Project Viewer selain peran Cloud Build Editor. Untuk mengatasi error ini, Anda dapat melakukan salah satu langkah berikut:
Gunakan bucket log default, lalu berikan peran Project Viewer dan peran Cloud Build Editor kepada pengguna yang menjalankan build. Untuk mengetahui petunjuk tentang cara memberikan izin ini, lihat Mengonfigurasi akses ke resource Cloud Build.
Membuat bucket Cloud Storage Anda sendiri untuk menyimpan log. Untuk mengetahui petunjuknya, lihat Menyimpan log build di bucket yang dibuat pengguna.
Build gagal karena tidak ada izin akun layanan
Cloud Build menggunakan akun layanan khusus untuk menjalankan build atas nama Anda. Jika akun layanan Cloud Build tidak memiliki izin yang diperlukan untuk melakukan tugas, Anda akan melihat error berikut:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com
Untuk mengatasi error ini, berikan izin yang diperlukan ke akun layanan. Gunakan informasi di halaman berikut untuk menentukan izin yang akan diberikan ke akun layanan Cloud Build:
Kegagalan build karena tidak adanya izin untuk akun layanan biasanya terjadi saat mencoba men-deploy menggunakan Cloud Build.
Error izin ditolak saat men-deploy di Cloud Functions
Anda melihat error berikut saat mencoba menggunakan Cloud Functions:
ResponseError: status=[403], code=[Ok], message=[Permission 'cloudfunctions.functions.get' denied
Untuk mengatasi error ini, berikan peran Cloud Functions Developer ke akun layanan Cloud Build.
Error izin tidak ada saat men-deploy di Cloud Functions
Anda melihat error berikut saat mencoba men-deploy di Cloud Functions:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com
Untuk mengatasi error ini, berikan peran Service Account User ke akun layanan Cloud Build.
Terjadi error saat men-deploy di App Engine
Anda melihat error berikut saat mencoba men-deploy di App Engine:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com
Untuk mengatasi error ini, berikan peran App Engine Admin ke akun layanan Cloud Build.
Error saat melakukan deployment di GKE
Anda melihat error berikut saat mencoba men-deploy di GKE:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com
Untuk mengatasi error ini, berikan peran GKE Developer ke akun layanan Cloud Build.
Terjadi error saat men-deploy di Cloud Run
Anda melihat error berikut saat mencoba men-deploy di Cloud Run:
Missing necessary permission iam.serviceAccounts.actAs for [USER] on the service account [CLOUD_BUILD_SERVICE_ACCOUNT]@PROJECT.iam.gserviceaccount.com
Anda melihat error ini karena akun layanan Cloud Build tidak memiliki izin IAM yang diperlukan untuk men-deploy di Cloud Run. Untuk informasi tentang cara memberikan izin yang diperlukan, lihat Men-deploy di Cloud Run.
Pemicu build gagal karena tidak ada izin cloudbuild.builds.create
Anda akan melihat error berikut saat menjalankan pemicu build:
Failed to trigger build: Permission 'cloudbuild.builds.create' denied on resource 'projects/xxxxxxxx' (or it may not exist)
Pemicu build menggunakan akun layanan Cloud Build untuk membuat
build. Error di atas menunjukkan bahwa akun layanan Cloud Build
tidak memiliki izin IAM cloudbuild.builds.create
, yang
diperlukan akun layanan untuk menjalankan pemicu build. Anda dapat mengatasi error ini dengan memberikan peran IAM Cloud Build Service Account
ke [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
.
Untuk petunjuk tentang cara memberikan peran ini, lihat Mengonfigurasi akses untuk akun layanan Cloud Build.
Pemicu gagal dengan Couldn't read commit
error
Anda akan melihat error berikut saat menjalankan pemicu build:
Failed to trigger build: Couldn't read commit
Cloud Build menampilkan pesan ini jika Anda mencoba memicu build menggunakan cabang yang tidak ada. Tinjau nama direktori Anda untuk memastikan ejaan dan konsistensinya. Untuk mengetahui petunjuk tentang penyiapan pemicu, lihat Membuat dan mengelola pemicu build.
Tidak dapat membuat pemicu Pub/Sub
Anda akan melihat error berikut saat membuat pemicu Pub/Sub:
Failed to create trigger: Request is prohibited by organization's policy
Error ini menunjukkan bahwa Pub/Sub API dibatasi dalam project Anda. Project yang membatasi Pub/Sub API membatasi kemampuan untuk membuat Langganan Push. Anda dapat menghapus Pub/Sub untuk sementara dari layanan yang dibatasi di perimeter Anda, membuat pemicu, dan membatasi Pub/Sub API lagi untuk menyelesaikan error.
Terjadi error saat menyimpan gambar di Container Registry
Anda melihat error berikut saat build mencoba menyimpan image yang telah di-build ke Container Registry:
[EMAIL_ADDRESS] does not have storage.buckets.create access to project [PROJECT_NAME]
Anda melihat error ini karena akun layanan Cloud Build tidak memiliki peran Admin Storage yang diperlukan untuk menyimpan image container di Container Registry.
Build gagal karena otorisasi SSH tidak valid
Anda akan melihat error berikut saat menjalankan build:
Could not parse ssh: [default]: invalid empty ssh-agent socket, make sure SSH_AUTH_SOCK is set
Error ini menunjukkan masalah dengan otorisasi SSH. Contoh umumnya adalah error otorisasi SSH yang terjadi saat mengakses repositori GitHub pribadi dengan Cloud Build. Guna mengetahui petunjuk cara menyiapkan SSH untuk GitHub, lihat Mengakses repositori GitHub pribadi.
Build gagal karena error No route to host
Anda melihat error berikut atau yang serupa saat menjalankan build di kumpulan pribadi:
Unable to connect to the server: dial tcp 192.168.10.XX:<port>: connect: no route to host
Cloud Build menjalankan Cloud builder di virtual machine dalam project yang dikelola Google menggunakan container Docker. Antarmuka bridge Docker (sehingga container yang terhubung ke antarmuka ini) diberi rentang IP 192.168.10.0/24
, sehingga komunikasi dengan host eksternal di subnet yang sama menjadi tidak mungkin. Saat mengalokasikan rentang IP untuk resource dalam project Anda selama konfigurasi kumpulan pribadi, sebaiknya pilih rentang di luar 192.168.10.0/24. Untuk mengetahui petunjuknya, lihat Menyiapkan lingkungan untuk kolam pribadi.
Koneksi ke resource eksternal gagal karena tidak ada IP eksternal yang diaktifkan
Anda melihat error berikut saat terhubung ke resource eksternal dari kumpulan pribadi:
Failed to connect to <external_domain>: Connection timed out
Kumpulan pribadi menggunakan IP eksternal untuk mengakses resource di internet publik, seperti repositori eksternal. Saat membuat atau memperbarui kumpulan pribadi, pilih kotak untuk menetapkan IP eksternal ke kumpulan pribadi Anda. Untuk mengetahui petunjuk tentang cara Membuat atau memperbarui kolom dalam kumpulan pribadi, lihat Membuat dan mengelola kumpulan pribadi.
Error waktu tunggu I/O
Anda akan melihat error berikut saat menjalankan build:
Timeout - last error: dial tcp IP_ADDRESS: i/o timeout
Error ini dapat terjadi saat build Anda mencoba mengakses resource di jaringan pribadi tetapi gagal. Secara default, build yang dijalankan melalui Cloud Build dapat mengakses resource pribadi di internet publik, seperti resource di repositori atau registry. Namun, build hanya dapat mengakses resource dalam jaringan pribadi jika Anda menggunakan kumpulan pribadi dan mengonfigurasinya untuk mengakses jaringan pribadi. Lihat Menggunakan Cloud Build di jaringan pribadi.
Error klien 4xx
Kelompok error ini menunjukkan bahwa permintaan build mungkin tidak berhasil karena kesalahan pengguna yang mengirim permintaan. Beberapa contoh error klien 4xx adalah:
**Error**: 404 : Requested entity was not found
**Error**: 404 : Trigger not found
**Error**: 400 : Failed Precondition
**Error**: 403 : Permission denied
Saat melihat error klien 4xx, lihat log build Anda untuk melihat apakah log berisi informasi lebih lanjut tentang alasan error tersebut atau tidak. Beberapa penyebab umum error klien meliputi:
- Lokasi sumber yang Anda tentukan tidak memiliki data baru untuk di-commit dan hierarki yang berfungsi bersih. Dalam hal ini, periksa lokasi kode sumber Anda dan coba build lagi.
- Repositori Anda tidak berisi file konfigurasi build. Jika demikian, upload file konfigurasi build ke repositori Anda dan jalankan lagi build tersebut.
- Anda menetapkan ID pemicu yang salah.
- Anda baru saja menambahkan repositori baru setelah menginstal aplikasi GitHub, dan Cloud Build tidak memiliki izin untuk mengakses repo baru. Jika demikian, hubungkan repositori baru Anda ke Cloud Build.
- Anda perlu memberikan izin lain ke akun layanan tersebut.
Build gagal karena batasan kuota
Anda melihat error berikut, yang menunjukkan bahwa build gagal karena pembatasan kuota di region tertentu:
Failed to trigger build: generic::failed_precondition: due to quota restrictions, cannot run builds in this region. Please contact support.
Hubungi Cloud Customer Care untuk meningkatkan kuota Anda untuk region tertentu ini. Untuk mempelajari kuota dan batas lebih lanjut, lihat Kuota dan batas.
Masalah waktu tunggu saat mengambil image dari registry Docker
Anda melihat error waktu tunggu berikut di log Cloud Build setelah dijalankan:
Step #0: Pulling image: python:3.8.16-alpine3.17
Step #0: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Step 1/7 : FROM python:3.8.16-alpine3.17
Get "https://registry-1.docker.io/v2/": dial tcp 34.205.13.154:443: i/o timeout
Untuk mengatasi error ini, download image Docker menggunakan crane, lalu lanjutkan untuk memuat image ke image Cloud Build Docker.
Tambahkan cuplikan berikut ke file cloudbuild.yaml Anda.
...
# Crane runs as a regular user so we need to allow it to access the directory where it saves the image.
- name: gcr.io/cloud-builders/docker
args:
- a+w
- /workspace
entrypoint: chmod
# Use crane to download the image through the proxy
- name: gcr.io/go-containerregistry/crane
env: - 'HTTPS_PROXY=HTTPS_PROXY'
args:
- pull
- 'python:3.8.16-alpine3.17'
- /workspace/image.tar
# Use docker load to add the image into the local Cloud Build registry
- name: gcr.io/cloud-builders/docker
args: [load, --input, "/workspace/image.tar"]
- .
HTTPS_PROXY
: Alamat proxy HTTP Anda (misalnya,https://proxy.example.com:8888/
).
Setelah image dimuat, langkah-langkah cloudbuid.yaml yang ada akan berfungsi seperti biasa, misalnya
...
- name: python:3.8.16-alpine3.17
args:
- echo
- hello
entrypoint: bash
# Or use it internally on a Dockerfile
- name: gcr.io/cloud-builders/docker
args:
- build
Unauthenticated
error untuk langkah Docker yang berjalan lama
Langkah-langkah build yang melibatkan perintah Docker yang berjalan selama lebih dari satu jam (seperti mengirim image besar ke Artifact Registry) mungkin akan gagal dengan error autentikasi. Cloud Build memperbarui token autentikasi setiap jam, tetapi Docker mungkin akan gagal mengambil token baru ini sehingga menyebabkan masalah autentikasi. Anda dapat menulis token Anda sendiri dengan masa aktif kustom untuk file dan mereferensikannya untuk perintah Docker.
Langkah selanjutnya
- Pelajari cara mengelola log build.