本頁說明如何使用 Cloud Build 建構及測試 Node.js
應用程式、將建構的構件儲存在 Artifact Registry 的 npm 存放區中,以及產生建構來源資訊。
Cloud Build 可讓您使用任何開放給大眾使用的容器映像檔執行工作。Docker Hub 的公開 node
映像檔已預先安裝 npm
工具。您可以設定 Cloud Build,以便使用這項工具建構 Node.js
專案。
事前準備
本頁的操作說明假設您已熟悉 Node.js
。此外:
- 熟悉 npm。
- 請準備好
Node.js
專案,包括package.json
和test.js
檔案。 - 請確認
package.json
檔案包含start
指令碼和test
指令碼。 - 熟悉如何編寫 Cloud Build 設定檔。
- 在 Artifact Registry 中擁有 npm 存放區。如果沒有,請建立新的存放區。
- 如要執行本頁中的
gcloud
指令,請安裝 Google Cloud CLI。
使用 npm
建構
如要在 Docker Hub 的 node
映像檔中執行工作,請在 Cloud Build 設定檔的 name
欄位中指定映像檔網址。Cloud Build 會使用映像檔的預設進入點,啟動 name
欄位中指定的容器。如要覆寫預設進入點,並定義建構步驟在叫用時的執行方式,請在建構步驟中新增 entrypoint
欄位。Docker Hub 中的 node
映像檔會預先安裝 npm
工具。在 entrypoint
欄位中指定工具,以便將其做為建構步驟的進入點叫用。
在下列建構設定檔範例中:
name
欄位會指定 Cloud Build 使用 Docker Hub 中的node
映像檔來執行工作。指定node
映像檔時,您可以省略節點版本,讓系統預設為:latest
,也可以指定節點版本,讓系統使用特定版本。例如,name: node
會使用最新版本的節點,而name: node:12
會使用node:12
。entrypoint
欄位會指定在叫用node
映像檔時使用npm
工具。steps: - name: 'node' entrypoint: 'npm'
設定 Node.js
版本
在專案根目錄中,建立名為
cloudbuild.yaml
的設定檔。安裝依附元件:在建構應用程式之前,您必須確保所有專案依附元件皆已從
npm
安裝。您可以在npm
建構步驟中使用install
指令安裝依附元件。建構步驟的args
欄位會取得引數清單,並將其傳送至 name 欄位參照的映像檔。在建構設定檔中,將install
新增至args
欄位,以叫用install
指令:steps: - name: 'node' entrypoint: 'npm' args: ['install']
新增測試:如果您已在
package.json
中定義test
指令碼,可以將test
新增至args
欄位,藉此設定 Cloud Build 執行指令碼:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
執行自訂指令:如果
package.json
包含任何自訂指令,您可以設定 Cloud Build 執行該指令。在args
欄位中,將run
新增為第一個引數,後面接著自訂指令的名稱。以下建構設定檔包含引數,可用來執行名為build
的自訂指令:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test'] - name: 'node' entrypoint: 'npm' args: ['run', 'build']
上傳至 Artifact Registry:
在設定檔中新增
npmPackages
欄位,並在 Artifact Registry 中指定 npm 存放區:artifacts: npmPackages: - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME' packagePath: 'PACKAGE_PATH'
替換下列值:
- LOCATION:Artifact Registry 中儲存庫的位置。
- PROJECT_ID:包含 Artifact Registry 存放區的 Google Cloud 專案 ID。
- REPOSITORY_NAME:Artifact Registry 中的 npm 存放區名稱。
- PACKAGE_PATH:本機目錄的路徑,其中包含要上傳至 Artifact Registry 的 npm 套件。建議您使用絕對路徑。
PACKAGE_PATH
值可以是.
,以便使用目前的工作目錄,但欄位不得省略或留空白。這個目錄必須包含package.json
檔案。
選用:啟用來源產生功能
Cloud Build 可產生可驗證的軟體構件供應鏈級別 (SLSA) 建構來源中繼資料,協助保護持續整合管道。
如要啟用來源產生功能,請在設定檔的
options
部分中新增requestedVerifyOption: VERIFIED
。-
建構作業完成後,您可以在 Artifact Registry 中查看存放區詳細資料。
您也可以查看建構來源資訊中繼資料,以及驗證來源資訊。
在多個 node
版本上執行測試
有時您需要確保專案可在多個 node
版本中運作。您可以建立及設定 Cloud Build 觸發條件,以便:
- 在建構設定檔中,將
node
版本指定為替換變數。 - 為您要建構應用程式的每個
node
版本建立一個觸發條件。 - 在每個觸發事件設定中,使用替換變數值欄位來指出該觸發事件的
node
版本。
以下步驟說明如何使用特定於觸發條件的替換變數指定 node
版本:
在存放區根目錄中新增建構設定檔,指定
node
version 做為替換變數。在以下建構設定檔範例中,$_NODE_VERSION
是使用者定義的替換變數:steps: - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['install'] - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['test']
針對您要建構的每個
node
版本,請按照下列步驟建立建構觸發事件:在 Google Cloud 控制台中開啟「Triggers」頁面:
在頁面頂端的專案選取器下拉式選單中選取專案。
按一下「開啟」。
按一下「建立觸發條件」。
在「Create trigger」(建立觸發條件) 頁面中輸入下列設定:
輸入觸發事件的名稱。
選取要啟動觸發條件的存放區事件。
選取含有原始碼和建構設定檔的存放區。
指定觸發條件的分支版本或標記名稱規則運算式。
設定:選擇先前建立的建構設定檔。
在「Substitution variables」(替代變數) 下方,按一下「Add variable」(新增變數)。
- 在「變數」下方,指定您在建構設定檔中使用的
node
版本變數,並在「值」下方指定node
的版本。例如_NODE_VERSION
和12
。
- 在「變數」下方,指定您在建構設定檔中使用的
按一下「建立」即可儲存自動建構觸發條件。
您可以使用這些觸發條件,根據觸發條件中指定的 node
版本建構程式碼。
後續步驟
- 瞭解如何查看建構結果。
- 瞭解如何保護建構作業。
- 瞭解如何建構容器映像檔。
- 瞭解如何建構 Go 應用程式。
- 瞭解如何在 Compute Engine 上執行藍綠部署作業。
- 瞭解如何排解建構錯誤。