Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman ini menjelaskan cara menggunakan Cloud Build untuk mem-build dan menguji aplikasi Node.js, menyimpan artefak yang di-build di repositori npm di Artifact Registry, dan menghasilkan informasi asal build.
Cloud Build memungkinkan Anda menggunakan image container yang tersedia secara publik untuk menjalankan tugas. Image node publik dari Docker Hub sudah diinstal sebelumnya dengan alat npm. Anda dapat mengonfigurasi Cloud Build untuk mem-build project Node.js dengan alat ini.
Sebelum memulai
Petunjuk di halaman ini mengasumsikan bahwa Anda sudah memahami Node.js. Selain itu:
Memiliki repositori npm di Artifact Registry. Jika Anda belum memilikinya, buat repositori baru.
Untuk menjalankan perintah gcloud di halaman ini, instal
Google Cloud CLI.
Membangun dengan npm
Untuk menjalankan tugas di image node dari Docker Hub, tentukan URL image
di kolom name dalam file konfigurasi Cloud Build.
Cloud Build memulai container yang ditentukan di kolom name menggunakan entrypoint default image. Untuk mengganti titik entri default
dan menentukan cara langkah build harus dijalankan saat dipanggil, tambahkan
kolom entrypoint di langkah build Anda. Image node di Docker Hub sudah
diinstal sebelumnya dengan alat npm. Tentukan alat di kolom entrypoint untuk
memanggilnya sebagai titik entri langkah build Anda.
Dalam contoh file konfigurasi build berikut:
Kolom name menentukan bahwa image node dari Docker Hub digunakan oleh Cloud Build untuk menjalankan tugas Anda. Saat menentukan image node, Anda dapat menghapus versi node agar ditetapkan secara default ke :latest, atau menentukan versi node untuk menggunakan versi tertentu. Misalnya, name: node akan menggunakan node versi
terbaru, dan name: node:12 akan menggunakan node:12.
Kolom entrypoint menentukan bahwa alat npm digunakan
saat gambar node dipanggil.
steps:
- name: 'node'
entrypoint: 'npm'
Mengonfigurasi build Node.js
Di direktori utama project, buat file konfigurasi bernama cloudbuild.yaml.
Menginstal dependensi: Sebelum dapat mem-build aplikasi, Anda harus
memastikan bahwa semua dependensi project diinstal dari npm. Anda
dapat menginstal dependensi menggunakan perintah install dalam langkah build
npm. Kolom args dari langkah build menggunakan daftar argumen dan meneruskannya ke gambar yang dirujuk oleh kolom nama. Dalam file konfigurasi build,
tambahkan install ke kolom args untuk memanggil perintah install:
Tambahkan pengujian: Jika telah menentukan skrip test di package.json, Anda dapat mengonfigurasi Cloud Build untuk menjalankan skrip dengan menambahkan test ke kolom args:
Menjalankan perintah kustom: Jika package.json berisi perintah kustom, Anda dapat mengonfigurasi Cloud Build untuk menjalankan perintah tersebut. Di kolom args, tambahkan run sebagai argumen pertama, diikuti dengan nama perintah kustom. File konfigurasi build berikut memiliki argumen untuk menjalankan perintah
kustom yang disebut build:
LOCATION: lokasi
untuk repositori Anda di Artifact Registry.
PROJECT_ID: ID Google Cloud project yang
berisi repositori Artifact Registry Anda.
REPOSITORY_NAME: nama repositori npm Anda di
Artifact Registry.
PACKAGE_PATH: jalur untuk direktori lokal
yang berisi paket npm yang ingin Anda upload ke Artifact Registry. Sebaiknya
gunakan jalur absolut. Nilai PACKAGE_PATH
Anda dapat berupa . untuk menggunakan direktori kerja saat ini, tetapi kolom tidak boleh
dihilangkan atau dikosongkan. Direktori ini harus berisi file package.json.
Terkadang Anda perlu memastikan bahwa project Anda berfungsi di beberapa
versi node. Anda dapat membuat dan mengonfigurasi
pemicu Cloud Build
sehingga:
Buat satu pemicu untuk setiap versi node yang ingin Anda gunakan untuk mem-build
aplikasi.
Di setiap setelan pemicu, gunakan kolom nilai variabel penggantian untuk
menunjukkan versi node untuk pemicu tersebut.
Langkah-langkah berikut menjelaskan cara menentukan versi node menggunakan variabel penggantian khusus pemicu:
Di root repositori, tambahkan file konfigurasi build, yang menentukan
versi node sebagai variabel penggantian. Dalam contoh file konfigurasi build berikut, $_NODE_VERSION adalah variabel penggantian yang ditentukan pengguna:
Pilih project Anda dari menu drop-down pemilih project di bagian atas
halaman.
Klik Buka.
Klik Create trigger.
Di halaman Create trigger, masukkan setelan berikut:
Masukkan nama untuk pemicu Anda.
Pilih peristiwa repositori untuk memulai pemicu Anda.
Pilih repositori yang berisi kode sumber dan file konfigurasi build Anda.
Tentukan ekspresi reguler untuk nama cabang atau tag yang akan memulai
pemicu Anda.
Configuration: Pilih file konfigurasi build yang Anda buat
sebelumnya.
Di bagian Substitution variables, klik Add variable.
Di bagian Variable, tentukan variabel versi node yang Anda gunakan
dalam file konfigurasi build, dan di bagian Value, tentukan versi
node. Misalnya, _NODE_VERSION dan 12.
Klik Buat untuk menyimpan pemicu build Anda.
Anda dapat menggunakan pemicu ini untuk mem-build kode pada versi node yang ditentukan dalam pemicu.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-04 UTC."],[[["\u003cp\u003eCloud Build can be used to build and test Node.js applications using the public \u003ccode\u003enode\u003c/code\u003e image from Docker Hub, which comes pre-installed with the \u003ccode\u003enpm\u003c/code\u003e tool.\u003c/p\u003e\n"],["\u003cp\u003eYou can configure Cloud Build to install dependencies, run tests, and execute custom commands defined in your \u003ccode\u003epackage.json\u003c/code\u003e file within the \u003ccode\u003enode\u003c/code\u003e environment.\u003c/p\u003e\n"],["\u003cp\u003eBuilt artifacts can be uploaded to an npm repository in Artifact Registry by specifying the repository details and package path in your \u003ccode\u003ecloudbuild.yaml\u003c/code\u003e configuration file.\u003c/p\u003e\n"],["\u003cp\u003eCloud Build allows for generating verifiable SLSA build provenance metadata to enhance the security of your continuous integration pipeline.\u003c/p\u003e\n"],["\u003cp\u003eYou can run tests on multiple Node.js versions by using substitution variables in the build config file and creating separate Cloud Build triggers for each version.\u003c/p\u003e\n"]]],[],null,["# Build and test Node.js applications\n\nThis page explains how to use Cloud Build to build and test `Node.js`\napplications, store built artifacts in an npm repository in Artifact Registry, and\ngenerate build provenance information.\n\nCloud Build enables you to use any publicly available container image\nto execute your tasks. The public\n[`node` image from Docker Hub](https://hub.docker.com/_/node/)\ncomes preinstalled with the `npm` tool. You can configure Cloud Build\nto build your `Node.js` project with this tool.\n\nBefore you begin\n----------------\n\nThe instructions on this page assume that you are familiar with `Node.js`. In\naddition:\n\n- Be familiar with [npm](https://docs.npmjs.com/about-npm).\n- Have your `Node.js` project handy, including `package.json` and `test.js` files.\n- Make sure your `package.json` file includes a `start` script and a `test` script.\n- Be familiar with [how to write a Cloud Build configuration file](/build/docs/build-config).\n- Have an npm repository in Artifact Registry. If you don't have one, [create a new repository](/artifact-registry/docs/repositories/create-repos).\n- To run the `gcloud` commands in this page, install the [Google Cloud CLI](/sdk).\n\nBuilding with `npm`\n-------------------\n\nTo execute your tasks in the `node` image from Docker Hub, specify the image URL\nin the `name` field in the [Cloud Build config file](/build/docs/build-config-file-schema).\nCloud Build starts the container specified in the `name`\nfield using the image's default entrypoint. To override the default entrypoint\nand define how the build step should be run when it is invoked, add an\n`entrypoint` field in your build step. The `node` image in Docker Hub comes\npreinstalled with the `npm` tool. Specify the tools in the `entrypoint` field to\ninvoke them as the entrypoint of your build step.\n\nIn the following example build config file:\n\n- The `name` field specifies that the `node` image from Docker Hub is used by Cloud Build to execute your task. When you're specifying the `node` image, you can either omit the node version to default to `:latest`, or specify a [node version](https://hub.docker.com/_/node/) to use a specific version. For example, `name: node` will use the latest version of node, and `name: node:12` will use `node:12`.\n- The `entrypoint` field specifies that the `npm` tool is used\n when the `node` image is invoked.\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n\nConfiguring `Node.js` builds\n----------------------------\n\n1. In your project root directory, create a\n config file named `cloudbuild.yaml`.\n\n2. **Install dependencies** : Before you can build your application, you must\n ensure that all of your project's dependencies are installed from `npm`. You\n can install dependencies using the `install` command within the `npm` build\n step. The `args` field of a build step takes a list of arguments and passes\n them to the image referenced by the name field. In your build config file,\n add `install` to the `args` field to invoke the `install` command:\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n args: ['install']\n\n3. **Add tests** : If you've defined a `test` script in your `package.json`, you\n can configure Cloud Build to run the script by adding `test` to the\n `args` field:\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n args: ['install']\n - name: 'node'\n entrypoint: 'npm'\n args: ['test']\n\n4. **Run custom commands** : If your `package.json` contains any custom commands,\n you can configure Cloud Build to run that command. In the `args`\n field, add `run` as the first argument followed by the name of the custom\n command. The following build config file has arguments to run a custom\n command called `build`:\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n args: ['install']\n - name: 'node'\n entrypoint: 'npm'\n args: ['test']\n - name: 'node'\n entrypoint: 'npm'\n args: ['run', 'build']\n\n5. **Upload to Artifact Registry**:\n\n In your config file, add the `npmPackages` field and specify your npm\n repository in Artifact Registry: \n\n artifacts:\n npmPackages:\n - repository: 'https://\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e-npm.pkg.dev/\u003cvar translate=\"no\"\u003ePROJECT-ID\u003c/var\u003e/\u003cvar translate=\"no\"\u003eREPOSITORY_NAME\u003c/var\u003e'\n packagePath: '\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003ePACKAGE_PATH\u003c/span\u003e\u003c/var\u003e'\n\n Replace the following values:\n - \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: the [location](/artifact-registry/docs/repo-locations) for your repository in Artifact Registry.\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the ID of the Google Cloud project that contains your Artifact Registry repository.\n - \u003cvar translate=\"no\"\u003eREPOSITORY_NAME\u003c/var\u003e: the name of your npm repository in Artifact Registry.\n - \u003cvar translate=\"no\"\u003ePACKAGE_PATH\u003c/var\u003e: the path for the local directory containing the npm package that you want to upload to Artifact Registry. We recommend using an absolute path. Your \u003cvar translate=\"no\"\u003ePACKAGE_PATH\u003c/var\u003e value can be `.` to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a `package.json` file.\n6. **Optional: Enable provenance generation**\n\n Cloud Build can generate verifiable\n [Supply chain Levels for Software Artifacts (SLSA)](https://slsa.dev/) build\n provenance metadata to help secure your continuous integration pipeline.\n\n To enable provenance generation, add\n [`requestedVerifyOption: VERIFIED`](/build/docs/build-config-file-schema#options)\n to the `options` section in your config file.\n7. **Start your build** : [manually](/build/docs/running-builds/start-build-manually) or\n [using build triggers](/build/docs/automating-builds/create-manage-triggers).\n\n Once your build completes, you can [view repository details](/artifact-registry/docs/repositories/list-repos)\n in Artifact Registry.\n\n You can also [view build provenance metadata](/build/docs/securing-builds/generate-validate-build-provenance#view) and [validate provenance](/build/docs/securing-builds/generate-validate-build-provenance#validate_provenance).\n\nRunning tests on multiple `node` versions\n-----------------------------------------\n\nSometimes it is necessary to ensure that your project works across multiple\nversions of `node`. You can create and configure\n[Cloud Build triggers](/build/docs/running-builds/create-manage-triggers)\nsuch that:\n\n- In your build config file, specify the `node` version as a [substitution variable](/build/docs/configuring-builds/substitute-variable-values).\n- Create one trigger for each version of `node` against which you want to build your application.\n- In each of the trigger settings, use the substitution variable value field to indicate the version of the `node` for that trigger.\n\nThe following steps explain how to specify the `node` version using trigger-specific\nsubstitution variables:\n\n1. In your repository root, add a build config file, which specifies the\n `node`version as a substitution variable. In the following example build\n config file, `$_NODE_VERSION` is a [user-defined substitution variable](/build/docs/configuring-builds/substitute-variable-values#using_user-defined_substitutions):\n\n steps:\n - name: 'node:$_NODE_VERSION'\n entrypoint: 'npm'\n args: ['install']\n - name: 'node:$_NODE_VERSION'\n entrypoint: 'npm'\n args: ['test']\n\n2. For each version of `node` you want to build against, create a build trigger\n using the following steps:\n\n 1. Open the **Triggers** page in the Google Cloud console:\n\n [Open Triggers page](https://console.cloud.google.com/cloud-build/triggers)\n 2. Select your project from the project selector drop-down menu at the top of\n the page.\n\n 3. Click **Open**.\n\n 4. Click **Create trigger**.\n\n On the **Create trigger** page, enter the following settings:\n 1. Enter a name for your trigger.\n\n 2. Select the repository event to start your trigger.\n\n 3. Select the repository that contains your source code and build\n config file.\n\n 4. Specify the regex for the branch or tag name that will start your\n trigger.\n\n 5. **Configuration**: Choose the build config file you created\n previously.\n\n 6. Under **Substitution variables** , click **Add variable**.\n\n 1. Under **Variable** , specify the `node` version variable you used in your build config file, and under **Value** specify the version of the `node`. For example, `_NODE_VERSION` and `12`.\n 5. Click **Create** to save your build trigger.\n\nYou can use these triggers to build your code on the version of `node` you\nspecified in the trigger.\n\nWhat's next\n-----------\n\n- Learn how to [view build results](/build/docs/view-build-results).\n- Learn how to [safeguard builds](/software-supply-chain-security/docs/safeguard-builds).\n- Learn how to [build container images](/build/docs/building/build-containers).\n- Learn how to [build Go applications](/build/docs/building/build-go).\n- Learn how to [perform blue/green deployments on Compute Engine](/build/docs/deploying-builds/deploy-compute-engine).\n- Learn how to [troubleshoot build errors](/build/docs/troubleshooting)."]]