部署至 App Engine

本頁面說明如何使用 Cloud Build 將應用程式部署至 App Engine。如果您是 Cloud Build 新手,請先參閱快速入門建構設定總覽

App Engine 是全代管的無伺服器平台,適用於大規模開發及託管網頁應用程式。如要進一步瞭解 App Engine,請參閱 App Engine 說明文件

事前準備

  • 啟用 App Engine API:

    啟用 App Engine API

  • 如要執行本頁的 gcloud 指令,請安裝 Google Cloud CLI

  • 請準備好要建構及部署至 App Engine 的應用程式原始碼。原始碼必須儲存在 Cloud Source Repositories、GitHub 或 Bitbucket 等存放區中。

必要的 IAM 權限

  1. 在 Google Cloud 控制台中選取專案。

  2. Cloud Build 服務帳戶角色授予 App Engine 預設服務帳戶。如果服務帳戶未顯示在清單中,請在「Service Accounts」(服務帳戶) 頁面中找出服務帳戶。

    前往「Service Accounts」(服務帳戶)

  3. App Engine 管理員角色和 服務帳戶使用者授予建構服務帳戶:

    1. 開啟「Cloud Build Settings」頁面:

      開啟 Cloud Build 設定頁面

    2. 將「App Engine 管理員」角色和「服務帳戶使用者」角色的狀態設為「已啟用」

設定部署作業

Cloud Build 可讓您使用任何開放給大眾使用的容器映像檔執行工作。您可以在 Cloud Build 設定檔的建構 step 中指定映像檔,即可完成這項操作。

App Engine 提供 gcloud app deploy 指令,可使用您的原始碼建構映像檔,並在 App Engine 中部署該映像檔。您可以將 cloud-sdk 映像檔設為設定檔中的建構步驟,以便在映像檔中叫用 gcloud 指令。系統會將傳送至這個建構步驟的引數直接傳送至 gcloud CLI,進而讓您在這個映像檔中執行任何 gcloud 指令。

如要將應用程式部署至 App Engine,請按照下列步驟操作:

  1. 建立名為 cloudbuild.yamlcloudbuild.jsonCloud Build 設定檔

  2. 在設定檔中:

    • 新增 name 欄位,指定 cloud-sdk 建構步驟。
    • 新增 entrypoint 欄位,以便在叫用 cloud-sdk 時使用 bash 工具。
    • args 欄位中,請叫用 gcloud app deploy 指令,並設定 timeout,讓 App Engine 在叫用 Cloud Build 時使用。這是必要的,因為 Cloud Build 建構步驟和建構的預設逾時為 10 分鐘,而 App Engine 部署可能需要更長的時間才能完成。指定較長的逾時時間,可確保在 gcloud app deploy 完成的時間超過 10 分鐘時,建構不會逾時。

      使用 App Engine 標準環境時發生逾時錯誤:您只能在使用 App Engine 彈性環境時,按照本文所述設定逾時值。App Engine 標準環境不允許設定建構逾時時間。如果您使用 Cloud Build 在 App Engine 標準環境中部署,但建構作業因逾時錯誤而失敗,建議您改用 App Engine 彈性環境或 Cloud Run,而非 App Engine 標準環境。

    • 新增超過 10 分鐘的建構 timeout 值。

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: 'bash'
      args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
    timeout: '1600s'
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "entrypoint": "bash",
        "args": [
          "-c",
          "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy"
         ]
      }
      ],
      "timeout": "1600s"
    }
    
  3. 開始建構,其中 SOURCE_DIRECTORY 是原始碼的路徑或網址,而 REGION支援的建構區域之一,可用於開始建構:

     gcloud builds submit --region=REGION SOURCE_DIRECTORY
    

持續部署

您可以建立 Cloud Build 觸發條件,自動將軟體部署至 App Engine。您可以設定觸發條件,以便在每次更新原始碼時建構及部署映像檔。

如要自動化 App Engine 部署作業,請按照下列步驟操作:

  1. 在存放區中,新增設定檔,並加入步驟來叫用 gcloud app deploy 指令:

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: 'bash'
      args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
    timeout: '1600s'
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "entrypoint": "bash",
        "args": [
          "-c",
          "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy"
         ]
      }
      ],
      "timeout": "1600s"
    }
    
  2. 使用上一個步驟建立的設定檔建立建構觸發條件:

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

      開啟「觸發條件」頁面

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

    3. 按一下「開啟」

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

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

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

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

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

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

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

    5. 按一下「建立」即可儲存自動建構觸發條件。

每次將新程式碼推送至存放區時,系統就會自動在 App Engine 上啟動建構作業和部署作業。

如要進一步瞭解如何建立 Cloud Build 觸發條件,請參閱「建立及管理建構觸發條件」一文。

後續步驟