持續部署至 Azure App Service

Azure App 服務藉由提取最新的更新,從GitHubBitbucketAzure Repos存放庫啟用持續部署。

注意

2021 年 3 月,Azure 入口網站舊版部署功能中的開發中心 (傳統) 頁面已被取代。 這項變更不會影響您應用程式中的現有部署設定,而且您可以從入口網站中的 [ 部署中心 ] 頁面繼續管理應用程式部署。

準備您的存放庫

若要從Azure App 服務組建伺服器取得自動化組建,請確定您的存放庫根目錄中有正確的檔案。

執行階段 根目錄檔案
ASP.NET (僅限 Windows) *.sln*.csprojdefault.aspx
ASP.NET Core *.sln*.csproj
PHP index.php
Ruby (僅限 Linux) Gemfile
Node.js 含啟動指令碼的 server.jsapp.js, 或 package.json
Python *.pyrequirements.txtruntime.txt
HTML default.htmdefault.htmldefault.aspindex.htmindex.htmliisstart.htm
WebJobsWebJobs < job_name > /執行。 <App_Data/jobs/continuous 下的擴充 >功能用於連續WebJobs,或針對觸發的 WebJobs App_Data/jobs/triggered。 如需詳細資訊,請參閱 Kudu WebJobs 文件
函式 請參閱 Azure Functions 的持續部署

若要自訂部署,您可以在儲存機制根路徑中包含 .deployment 檔案。 如需詳細資訊,請參閱自訂部署自訂部署指令碼

注意

如果您使用Visual Studio,請Visual Studio為您建立存放庫。 您的專案會立即準備好透過 Git 進行部署。

設定部署來源

  1. Azure 入口網站中,移至App Service應用程式的管理頁面。

  2. 在左窗格中,選取 [部署中心]。 然後選取[設定]。

  3. 在 [ 來源] 方塊中,選取其中一個 CI/CD 選項:

    Screenshot that shows how to choose the deployment source.

選取對應至組建提供者的索引標籤以繼續。

  1. GitHub Actions是預設的組建提供者。 若要變更提供者,請選取 [變更提供者>App Service建置服務 ( Kudu) >確定]。

    注意

    若要使用 Azure Pipelines 作為App Service應用程式的建置提供者,請直接從 Azure Pipelines 設定 CI/CD。 請勿在 App Service 中加以設定。 Azure Pipelines選項只會將您指向正確的方向。

  2. 如果您是第一次從 GitHub 進行部署,請選取 [授權],然後遵循授權提示。 如果您想要從不同的使用者存放庫部署,請選取 [ 變更帳戶]。

  3. 使用 GitHub 授權 Azure 帳戶之後,請選取 [組織]、[存放庫] 和[分支] 來設定 CI/CD。 如果找不到組織或存放庫,您可能需要啟用GitHub的更多許可權。 如需詳細資訊,請參閱 管理組織存放庫的存取權。

  4. 選取GitHub Actions作為組建提供者時,您可以使用[執行時間堆疊] 和 [版本] 下拉式清單來選取您想要的工作流程檔案。 Azure 會將此工作流程檔案認可至您選取的GitHub存放庫,以處理建置和部署工作。 若要在儲存變更之前查看檔案,請選取 [預覽檔案]。

    注意

    App Service會偵測應用程式的語言堆疊設定,並選取最適當的工作流程範本。 如果您選擇不同的範本,它可能會部署未正確執行的應用程式。 如需詳細資訊,請參閱GitHub Actions組建提供者的運作方式

  5. 選取 [儲存]。

    所選取存放庫和分支中的新認可,現在會持續部署到 App Service 應用程式。 您可以在 [ 記錄 ] 索引標籤上追蹤認可和部署。

停用連續部署

  1. Azure 入口網站中,移至App Service應用程式的管理頁面。

  2. 在左窗格中,選取 [部署中心]。 然後選取設定>Disconnect

    Screenshot that shows how to disconnect your cloud folder sync with your App Service app in the Azure portal.

  3. 根據預設,GitHub Actions工作流程檔案會保留在您的存放庫中,但它會繼續觸發應用程式的部署。 若要從存放庫刪除檔案,請選取 [ 刪除工作流程檔案]。

  4. 選取 [確定]。

在部署期間我的應用程式會發生什麼事?

所有正式支援的部署方法都會變更您應用程式 /home/site/wwwroot 資料夾中的檔案。 這些檔案是用來執行您的應用程式。 因此部署可能會因為鎖定的檔案而失敗。 應用程式也可能在部署期間發生無法預期的行為,因為檔案並未同時更新。 客戶面向應用程式不需要此行為。 有幾種方式可以避免這些問題:

GitHub Actions組建提供者的運作方式

GitHub Actions組建提供者是來自GitHub CI/CD的選項。 它會完成這些動作來設定 CI/CD:

  • 將GitHub Actions工作流程檔案儲存到您的GitHub存放庫,以處理建置和部署工作以App Service。
  • 將應用程式的發佈設定檔新增為GitHub秘密。 工作流程檔案會使用此秘密向App Service進行驗證。
  • 工作流程執行記錄 擷取資訊,並在您應用程式的部署中心之 [ 記錄 ] 索引標籤上顯示。

您可以透過下列方式自訂GitHub Actions組建提供者:

  • 在GitHub存放庫中產生工作流程檔案之後,自訂該檔案。 如需詳細資訊,請參閱GitHub Actions的工作流程語法。 只要確定工作流程會部署至使用 azure/webapps-deploy動作App Service。
  • 如果選取的分支受到保護,您仍然可以預覽工作流程檔案,而不儲存組態,然後手動將它新增至您的存放庫。 此方法不會讓您記錄與Azure 入口網站的整合。
  • 不使用發行設定檔,請在 Azure Active Directory中使用服務主體進行部署。

使用服務主體進行驗證

這個選擇性組態會將預設驗證取代為產生的工作流程檔案中的發佈設定檔。

  1. Azure CLI中使用az ad sp create-for-rbac命令產生服務主體。 在下列範例中,以您自己的值取代 subscription-id > 、 < group-name 和 < app-name >> : <

    az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
                                --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
                                --sdk-auth
    

    重要

    針對安全性,請授與服務主體的最低必要存取權。 上一個範例中的範圍限制為特定 App Service 應用程式,而不是整個資源群組。

  2. 儲存下一個步驟的整個 JSON 輸出,包括最上層 {}

  3. GitHub的存放庫中,選取[設定>Secrets>新增秘密]。

  4. 將得自 Azure CLI 命令的整個 JSON 輸出貼到祕密的 [值] 欄位中。 為秘密命名,例如 AZURE_CREDENTIALS

  5. 在部署中心產生的工作流程檔案中,修改 azure/webapps-deploy 步驟,以類似下列範例 (從Node.js工作流程檔案修改) :

    - name: Sign in to Azure 
    # Use the GitHub secret you added.
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    - name: Deploy to Azure Web App
    # Remove publish-profile.
    - uses: azure/webapps-deploy@v2
      with:
        app-name: '<app-name>'
        slot-name: 'production'
        package: .
    - name: Sign out of Azure.
      run: |
        az logout
    

從其他存放庫部署

對於Windows應用程式,您可以從入口網站未直接支援的雲端 Git 或 Mercurial 存放庫手動設定持續部署,例如GitLab。 您可以在 [來源] 下拉式清單中選取[外部 Git] 來執行此動作。 如需詳細資訊,請參閱 使用手動步驟設定持續部署

其他資源