Mengirim build melalui CLI dan API

Halaman ini menjelaskan cara memulai build di Cloud Build secara manual menggunakan Google Cloud CLI dan Cloud Build API.

Sebelum memulai

  • Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal Google Cloud CLI.
  • Untuk mem-build menggunakan konfigurasi build Cloud Build, buat file konfigurasi build.
  • Untuk mem-build menggunakan Dockerfile, siapkan Dockerfile.
  • Jika build Anda memerlukan kode sumber, siapkan kode sumber.

Izin IAM yang diperlukan

Untuk mengetahui petunjuk tentang cara memberikan peran IAM, lihat artikel Mengonfigurasi akses ke resource Cloud Build.

Build yang berjalan

Anda dapat menentukan sumber build menggunakan kolom Build source. Kolom Sumber build adalah salah satu dari berikut ini: storage_source, repo_source, git_source, dan connected_repository.

Kirim build dengan storage_source

gcloud

Menggunakan Dockerfile:

Dockerfile Anda berisi semua informasi yang diperlukan untuk membangun image Docker menggunakan Cloud Build.

Untuk menjalankan permintaan build menggunakan Dockerfile, jalankan perintah berikut dari direktori yang berisi kode aplikasi Anda, Dockerfile, dan aset lainnya:

gcloud builds submit --region=us-west2 --tag gcr.io/PROJECT_ID/IMAGE_NAME .

Dengan keterangan:

  • PROJECT_ID adalah nama project Google Cloud Anda.
  • IMAGE_NAME adalah image yang akan dibuat.
  • . menentukan bahwa kode sumber berada di direktori kerja saat ini.

Nama lengkap image yang akan dibuat adalah gcr.ioPROJECT_ID/IMAGE_NAME. Gambar yang dikirim ke Container Registry menggunakan format nama registry.

Perintah gcloud builds submit:

  • mengompresi kode aplikasi Anda, Dockerfile, dan aset lainnya dalam direktori saat ini seperti yang ditunjukkan oleh .;
  • mengupload file ke bucket Cloud Storage;
  • memulai build di lokasi us-west2 menggunakan file yang diupload sebagai input;
  • memberi tag pada gambar menggunakan nama yang diberikan
  • mengirim image yang dibangun ke Container Registry.

Saat build berlangsung, output-nya akan ditampilkan di jendela shell atau terminal Anda. Setelah build selesai, Anda akan melihat output yang mirip seperti berikut:

    DONE
    ---------------------------------------------------------------------------------
    ID                                    CREATE_TIME                DURATION STATUS
    $BUILD_ID                             2023-10-28T15:21:18+00:00  12S      SUCCESS

dengan $BUILD_ID adalah ID unik build Anda.

Menggunakan file konfigurasi build Cloud Build:

Untuk mengirimkan build menggunakan konfigurasi build, jalankan perintah berikut:

    gcloud builds submit --region=us-west2 --config BUILD_CONFIG SOURCE

Dengan keterangan:

  • BUILD_CONFIG adalah jalur ke file konfigurasi build.
  • SOURCE adalah jalur atau kode sumber URL.

Saat Anda menjalankan gcloud builds submit untuk pertama kalinya di project Google Cloud, Cloud Build membuat bucket Cloud Storage bernama [YOUR_PROJECT_NAME]_cloudbuild di project tersebut. Cloud Build menggunakan bucket ini untuk menyimpan kode sumber yang mungkin digunakan untuk build Anda. Cloud Build tidak otomatis menghapus konten di bucket ini. Untuk menghapus objek yang tidak lagi digunakan untuk build, Anda dapat menyiapkan konfigurasi siklus proses pada bucket atau menghapus objek secara manual.

Perintah berikut menunjukkan cara mengirimkan permintaan build cloudbuild.yaml menggunakan kode sumber yang tersimpan di bucket Cloud Storage.

    gcloud builds submit --region=us-west2 --config cloudbuild.yaml \
        gs://BUCKET/SOURCE.tar.gz

Dengan keterangan:

  • BUCKET adalah nama bucket Anda di Cloud Storage yang berisi kode sumber yang akan di-build.
  • SOURCE adalah nama file kode sumber yang dikompresi.

Anda dapat menggunakan . untuk menentukan bahwa kode sumber berada di direktori kerja saat ini:

    gcloud builds submit --region=us-west2 --config=cloudbuild.yaml .

API

Untuk mengirimkan permintaan build menggunakan curl:

  1. Buat file bernama request.json dengan konten berikut:

    {
        "source": {
            "storageSource": {
                "bucket": "BUCKET",
                "object": "SOURCE.tar.gz"
            }
        },
        "steps": [{
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/PROJECT_ID/IMAGE_NAME",
                "."
            ]
        }],
        "images": [
            "gcr.io/PROJECT_ID/IMAGE_NAME"
        ]
    }
    

    Dengan keterangan:

    • BUCKET adalah nama bucket Cloud Storage Anda yang berisi kode sumber yang akan di-build.
    • SOURCE adalah nama file kode sumber yang dikompresi.
    • IMAGE_NAME adalah nama image yang akan dibuat.

    Dalam permintaan build ini, Cloud Build memanggil langkah build docker dengan argumen build -t gcr.io/$PROJECT_ID/IMAGE-NAME ..

    Nama lengkap image yang akan dibuat adalah gcr.io/$PROJECT_ID/IMAGE_NAME.

    Gambar yang dikirim ke Container Registry menggunakan format nama registry.

  2. Jalankan perintah berikut dengan PROJECT_ID sebagai project ID Google Cloud Anda dan REGION merupakan salah satu region yang didukung:

    curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \
        --format='value(credential.access_token)')" \
        https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/builds
    

    Dalam perintah ini, curl mengirim request.json dalam panggilan POST ke endpoint builds untuk metode API projects.builds.create.

    Perintah ini menampilkan detail tentang build Anda di jendela shell atau terminal. Output-nya adalah respons JSON dan terlihat mirip dengan berikut:

        {
            "name": "operations/build/$PROJECT-ID/NmZhZW...",
            "metadata": {
                "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
                "build": {
                    "id": $BUILD-ID,
                    "status": "QUEUED",
                    "source": {
                        "storageSource": {
                            "bucket": "BUCKET",
                            "object": "SOURCE.tar.gz"
                        }
                    },
                    "createTime": "2017-05-12T18:58:07.341526Z",
                    "steps": [
                    {
                        "name": "gcr.io/cloud-builders/docker",
                        "args": [
                            "build",
                            "-t",
                            "gcr.io/PROJECT_ID/IMAGE_NAME",
                            "."
                        ]
                    }
                    ],
                    "timeout": "600s",
                    "images": [
                        "gcr.io/$PROJECT_ID/IMAGE_NAME"
                    ],
                    "projectId": $PROJECT-ID,
                    "logsBucket": "gs://...",
                    "sourceProvenance": {
                        "resolvedStorageSource": {
                            "bucket": "BUCKET",
                            "object": "SOURCE.tar.gz"
                            "generation": "..."
                        }
                    },
                    "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=$PROJECT_ID"
                }
            }
        }
    

    Respons JSON dimodelkan menggunakan resource Operation di Cloud Build API. Kolom metadata dimodelkan menggunakan resource Build. Status QUEUED menunjukkan bahwa build sedang menunggu eksekusi.

Kirim build dengan connected_repository

gcloud

Untuk menjalankan permintaan build dengan sumber build dari resource repositori generasi ke-2, jalankan perintah berikut:

gcloud builds submit REPOSITORY --revision=REVISION --config=BUILD_CONFIG --region=us-west2

Dengan keterangan:

  • REPOSITORY adalah nama repositori generasi ke-2 Google Cloud Build, yang diformat sebagai projects/*/locations/*/connections/*repositories/*.
  • REVISION adalah revisi untuk diambil dari repositori Git seperti cabang, tag, SHA commit, atau ref Git apa pun.
  • BUILD_CONFIG adalah jalur ke file konfigurasi build.

Saat build berlangsung, output-nya akan ditampilkan di jendela shell atau terminal Anda. Setelah build selesai, Anda akan melihat output yang mirip seperti berikut:

    DONE
    ---------------------------------------------------------------------------------
    ID                                    CREATE_TIME                DURATION STATUS
    $BUILD_ID                             2023-10-28T15:21:18+00:00  12S      SUCCESS

dengan $BUILD_ID adalah ID unik build Anda.

gcloudignore: Saat menyertakan kode sumber untuk build, perintah di atas mengupload semua file dalam direktori yang ditentukan ke Google Cloud Platform untuk di-build. Jika ingin mengecualikan file tertentu dalam direktori, Anda dapat menyertakan file bernama .gcloudignore dalam direktori upload level atas; file yang ditentukan akan diabaikan. Jika tidak ada file .gcloudignore di direktori upload level teratas, sedangkan file .gitignore ada di direktori upload level atas, gcloud CLI akan menghasilkan file .gcloudignore yang kompatibel dengan Git yang mengikuti file .gitignore Anda. Untuk mengetahui informasi selengkapnya, lihat dokumentasi gcloudignore.

Jika Anda tidak memiliki kode sumber yang akan diteruskan ke build, gunakan flag --no-source dengan BUILD_CONFIG sebagai jalur ke file konfigurasi build:

    gcloud builds submit --region=us-west2 --config=BUILD_CONFIG --no-source

API

Untuk mengirimkan permintaan build menggunakan curl:

  1. Buat file bernama request.json dengan konten berikut:

    {
        "source": {
            "connectedRepository": {
                "repository": "REPOSITORY",
                "revision": "REVISION"
            }
        },
        "steps": [{
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/PROJECT_ID/IMAGE_NAME",
                "."
            ]
        }],
        "images": [
            "gcr.io/PROJECT_ID/IMAGE_NAME"
        ]
    }
    

    Dengan keterangan:

    • REPOSITORY adalah nama repositori generasi ke-2 Google Cloud Build, yang diformat sebagai projects/*/locations/*/connections/*repositories/*.
    • REVISION adalah revisi untuk diambil dari repositori Git seperti cabang, tag, SHA commit, atau ref Git apa pun.
    • IMAGE_NAME adalah nama image yang akan dibuat.

    Dalam permintaan build ini, Cloud Build memanggil langkah build docker dengan argumen build -t gcr.io/PROJECT_ID/IMAGE_NAME ..

    Nama lengkap image yang akan dibuat adalah gcr.io/PROJECT_ID/IMAGE_NAME. Gambar yang dikirim ke Container Registry menggunakan format nama registry.

  2. Jalankan perintah berikut dengan PROJECT_ID sebagai project ID Google Cloud Anda dan REGION merupakan salah satu region yang didukung:

    curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \
        --format='value(credential.access_token)')" \
        https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/builds
    

    Dalam perintah ini, curl mengirim request.json dalam panggilan POST ke endpoint builds untuk metode API projects.builds.create.

    Perintah ini menampilkan detail tentang build Anda di jendela shell atau terminal. Output-nya adalah respons JSON dan terlihat mirip dengan berikut:

        {
            "name": "operations/build/$PROJECT-ID/NmZhZW...",
            "metadata": {
                "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
                "build": {
                    "id": $BUILD-ID,
                    "status": "QUEUED",
                    "source": {
                        "connectedRepository": {
                            "repository": "REPOSITORY",
                            "revision": "REVISION"
                        }
                    },
                    "createTime": "2017-05-12T18:58:07.341526Z",
                    "steps": [
                    {
                        "name": "gcr.io/cloud-builders/docker",
                        "args": [
                            "build",
                            "-t",
                            "gcr.io/PROJECT_ID/IMAGE_NAME",
                            "."
                        ]
                    }
                    ],
                    "timeout": "600s",
                    "images": [
                        "gcr.io/PROJECT_ID/IMAGE_NAME"
                    ],
                    "projectId": PROJECT_ID,
                    "logsBucket": "gs://...",
                    "sourceProvenance": {
                        "resolvedConnectedRepository": {
                            "repository": "REPOSITORY",
                            "revision": "REVISION.tar.gz"
                            "generation": "..."
                        }
                    },
                    "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=PROJECT_ID"
                }
            }
        }
    

    Respons JSON dimodelkan menggunakan resource Operation di Cloud Build API. Kolom metadata dimodelkan menggunakan resource Build. Status QUEUED menunjukkan bahwa build sedang menunggu eksekusi.

Langkah selanjutnya