部署至 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. 在 Google Cloud 控制台中,前往「Cloud Build 權限」頁面:

      前往「權限」

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

設定部署作業

Cloud Build 可讓您使用任何開放給大眾使用的容器映像檔執行工作。如要這麼做,請在 Cloud Build 設定檔中,於建構 step 中指定映像檔。

App Engine 提供 gcloud app deploy 指令,可使用您的原始碼建構映像檔,並將該映像檔部署至 App Engine。您可以在設定檔中使用 cloud-sdk image 做為建構步驟,在映像檔中叫用 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 分鐘的 build 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. 「Configuration」(設定):選擇您先前建立的建構設定檔。

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

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

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

後續步驟