建構及測試 Node.js 應用程式

本頁說明如何使用 Cloud Build 建構及測試 Node.js 應用程式、將建構的構件儲存在 Artifact Registry 的 npm 存放區中,以及產生建構來源資訊。

Cloud Build 可讓您使用任何開放給大眾使用的容器映像檔執行工作。Docker Hub 的公開 node 映像檔已預先安裝 npm 工具。您可以設定 Cloud Build,以便使用這項工具建構 Node.js 專案。

事前準備

本頁的操作說明假設您已熟悉 Node.js。此外:

使用 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 版本

  1. 在專案根目錄中,建立名為 cloudbuild.yaml 的設定檔。

  2. 安裝依附元件:在建構應用程式之前,您必須確保所有專案依附元件皆已從 npm 安裝。您可以在 npm 建構步驟中使用 install 指令安裝依附元件。建構步驟的 args 欄位會取得引數清單,並將其傳送至 name 欄位參照的映像檔。在建構設定檔中,將 install 新增至 args 欄位,以叫用 install 指令:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
    
  3. 新增測試:如果您已在 package.json 中定義 test 指令碼,可以將 test 新增至 args 欄位,藉此設定 Cloud Build 執行指令碼:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node'
       entrypoint: 'npm'
       args: ['test']
    
  4. 執行自訂指令:如果 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']
    
  5. 上傳至 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 檔案。
  6. 選用:啟用來源產生功能

    Cloud Build 可產生可驗證的軟體構件供應鏈級別 (SLSA) 建構來源中繼資料,協助保護持續整合管道。

    如要啟用來源產生功能,請在設定檔的 options 部分中新增 requestedVerifyOption: VERIFIED

  7. 啟動建構作業手動使用建構觸發條件

    建構作業完成後,您可以在 Artifact Registry 中查看存放區詳細資料

    您也可以查看建構來源資訊中繼資料,以及驗證來源資訊

在多個 node 版本上執行測試

有時您需要確保專案可在多個 node 版本中運作。您可以建立及設定 Cloud Build 觸發條件,以便:

  • 在建構設定檔中,將 node 版本指定為替換變數
  • 為您要建構應用程式的每個 node 版本建立一個觸發條件。
  • 在每個觸發事件設定中,使用替換變數值欄位來指出該觸發事件的 node 版本。

以下步驟說明如何使用特定於觸發條件的替換變數指定 node 版本:

  1. 在存放區根目錄中新增建構設定檔,指定 nodeversion 做為替換變數。在以下建構設定檔範例中,$_NODE_VERSION使用者定義的替換變數

     steps:
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['test']
    
  2. 針對您要建構的每個 node 版本,請按照下列步驟建立建構觸發事件:

    1. 在 Google Cloud 控制台中開啟「Triggers」頁面:

      開啟「觸發條件」頁面

    2. 在頁面頂端的專案選取器下拉式選單中選取專案。

    3. 按一下「開啟」

    4. 按一下「建立觸發條件」

      在「Create trigger」(建立觸發條件) 頁面中輸入下列設定:

      1. 輸入觸發事件的名稱。

      2. 選取要啟動觸發條件的存放區事件。

      3. 選取含有原始碼和建構設定檔的存放區。

      4. 指定觸發條件的分支版本或標記名稱規則運算式。

      5. 設定:選擇先前建立的建構設定檔。

      6. 在「Substitution variables」(替代變數) 下方,按一下「Add variable」(新增變數)

        1. 在「變數」下方,指定您在建構設定檔中使用的 node 版本變數,並在「值」下方指定 node 的版本。例如 _NODE_VERSION12
    5. 按一下「建立」即可儲存自動建構觸發條件。

您可以使用這些觸發條件,根據觸發條件中指定的 node 版本建構程式碼。

後續步驟