Pemecahan masalah error build

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:

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