共用方式為


使用 Azure Pipelines 部署至 Azure Stack Hub App Service

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

本文將逐步引導您設定 CI/CD 管線,以使用 Azure Pipelines 將應用程式部署至 Azure Stack Hub 實例中的應用程式服務。

在本文中,您可以瞭解如何建立或驗證:

  • Azure Stack Hub 服務主體 (管線的 SPN) 認證。
  • Azure Stack Hub 實例中的 Web 應用程式。
  • Azure Stack Hub 實例的服務連線。
  • 具有應用程式程式碼的存放庫,可部署至您的應用程式

必要條件

建立或驗證 SPN

SPN 會提供角色型認證,讓 Azure 外部的程序能夠連線到資源,並與其互動。 您需要具有參與者存取權的 SPN,以及這些指示中指定的屬性,才能搭配您的 Azure DevOps 管線使用。

身為 Azure Stack Hub 的使用者,您沒有建立 SPN 的許可權。 您必須向雲端操作員要求此主體。 此處提供指示,因此如果您是雲端操作員,您可以建立 SPN,或者如果您是雲端操作員所提供工作流程中的 SPN 開發人員,則可以驗證 SPN。

雲端操作員需要使用 Azure CLI 來建立 SPN。

下列程式碼片段是使用 PowerShell 提示字元搭配 適用于 Azure Stack Hub 的 Azure CLI 為Windows 電腦所撰寫。 如果您在 Linux 機器和 Bash 上使用 CLI,請移除行延伸模組,或將它們取代為 \

  1. 準備下列用來建立 SPN 的參數值:

    參數 範例 描述
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" 資源管理端點。
    suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" 儲存體帳戶的端點尾碼。
    suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Key Vault 服務 DNS 尾碼。
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Active Directory 資源識別碼。
    endpoint-sql-management https://notsupported SQL Server 管理端點。 請設為 https://notsupported
    profile 2019-03-01-hybrid 要用於此雲端的設定檔。
  2. 開啟並登入您的命令列工具 (例如 Windows PowerShell 或 Bash)。 使用下列命令:

    az login
    
  3. register如果您使用現有的環境, update 請使用 命令作為新環境或 命令。 使用下列命令。

    az cloud register `
        -n "AzureStackUser" `
        --endpoint-resource-manager "https://management.<local>.<FQDN>" `
        --suffix-storage-endpoint ".<local>.<FQDN>" `
        --suffix-keyvault-dns ".vault.<local>.<FQDN>" `
        --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" `
        --endpoint-sql-management https://notsupported  `
        --profile 2019-03-01-hybrid
    
  4. 取得您想要用於 SPN 的訂閱識別碼和資源群組。

  5. 使用下列命令,搭配訂閱識別碼和資源群組來建立 SPN:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    

    如果您沒有雲端操作員許可權,您也可以使用雲端操作員所提供的 SPN 登入。 您將需要用戶端識別碼、秘密和租使用者識別碼。 使用這些值,您可以使用下列 Azure CLI 命令來建立 JSON 物件,其中包含建立服務連線所需的值。

    az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions
    az account show
    
  6. 檢查產生的 JSON 物件。 您將使用 JSON 物件來建立服務連線。 JSON 物件應該具有下列屬性:

    {
      "environmentName": "<Environment name>",
      "homeTenantId": "<Tenant ID for the SPN>",
      "id": "<Application ID for the SPN>",
      "isDefault": true,
      "managedByTenants": [],
      "name": "<Tenant name>",
      "state": "Enabled",
      "tenantId": "<Tenant ID for the SPN>",
      "user": {
        "name": "<User email address>",
        "type": "user"
      }
    }
    

建立 Web 應用程式目標

  1. 登入 Azure Stack Hub 入口網站。
  2. 選取 [建立資源] [Web + 行動] [Web 應用程式]
  3. 選取 [訂用帳戶]。
  4. 建立或選取 [資源群組]。
  5. 鍵入應用程式的 [名稱]。 應用程式名稱會出現在應用程式的 URL 中,例如 yourappname.appservice.<region>.<FQDN>
  6. 選取應用程式的 [執行階段堆疊]。 執行時間必須符合您計畫用於 Web 應用程式的程式碼。
  7. 選取將裝載執行階段和應用程式的作業系統 (OS)。
  8. 選取或鍵入 Azure Stack Hub 執行個體的 [區域]。
  9. 根據 Azure Stack Hub 執行個體、區域和應用程式 OS 來選取方案。
  10. 選取 [檢閱 + 建立] 。
  11. 檢閱您的 Web 應用程式。 選取 [建立]。
  12. 選取 [前往資源] 。
  13. 記下您的應用程式名稱。 您會將名稱新增至 yml 檔,以定義存放庫中的管線。

新增服務連線

建立服務連線。 您需要來自 SPN 的值,以及 Azure Stack Hub 訂用帳戶的名稱。

  1. 登入 您的 Azure DevOps 組織,然後流覽至您的專案。

  2. 選取 [專案設定],然後選取 [服務連線]。

  3. 選取[服務>連線] [新增服務連線]。

  4. 選取[Azure Resource Manager],然後選取 [下一步]。

  5. 選取 [服務主體] (手動)

  6. [環境] 選取[Azure Stack]。

  7. 填寫表單,然後選取 [ 驗證並儲存]。

  8. 為您的服務連線命名。 (您需要服務連線名稱,才能建立 yaml 管線) 。

    建立 Azure Stack Hub 的服務連線

建立存放庫並新增管線

  1. 如果您尚未將 Web 應用程式程式碼新增至存放庫,請立即新增。

  2. 開啟存放庫。 選取存放庫,然後選取 [流覽]。

  3. 選取 管線

  4. 選取 [建立新管線]。

  5. 選取 [Azure Repos Git]。

  6. 選取您的存放庫。

  7. 選取 [入門管線]。

  8. 流覽回存放庫,然後開啟 azure-pipelines.yml

  9. 新增下列 yaml:

    # Starter pipeline
    # Start with a minimal pipeline that you can customize to build and deploy your code.
    # Add steps that build, run tests, deploy, and more:
    # https://aka.ms/yaml
    trigger:
    - main
    variables:
      azureSubscription: '<your connection name>'
      VSTS_ARM_REST_IGNORE_SSL_ERRORS: true
    steps:
    - task: AzureWebApp@1
      displayName: Azure Web App Deploy
      inputs:
        azureSubscription: $(azureSubscription)
        appName: <your-app-name>
        package: '$(System.DefaultWorkingDirectory)'
    

    注意

    若要忽略 SSL 錯誤,請將名為 VSTS_ARM_REST_IGNORE_SSL_ERRORS 的變數設定為組建或發行管線中的值 true ,如本範例所示。

  10. azureSubscription使用服務連線的名稱更新值。

  11. appName使用您的應用程式名稱更新 。 您現在可以開始進行部署。

搭配 Azure Stack Hub 使用 Azure 工作的注意事項

下列 Azure 工作會使用 Azure Stack Hub 進行驗證:

下一步