本頁說明如何使用 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 版本:
在存放區根目錄中新增建構設定檔,指定
nodeversion 做為替換變數。在以下建構設定檔範例中,$_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 上執行藍綠部署作業。
- 瞭解如何排解建構錯誤。