練習 - 設定您的 Azure DevOps 環境

已完成

在本節中,您將瞭解如何設定 Azure DevOps 組織,並建立您要部署的 Azure App Service 環境。

您將瞭解如何:

  • 設定您的 Azure DevOps 專案。
  • 使用 Azure Boards 管理您的工作專案。
  • 建立您的 Azure App Service 環境。
  • 在 Azure Pipelines 中建立管線變數。
  • 建立服務連線以向 Azure 訂用帳戶進行驗證。

將使用者新增至 Azure DevOps

若要完成本課程模組,您需要自己的 Azure 訂用帳戶。 您可以免費開始使用 Azure。

您不需要 Azure 訂用帳戶即可使用 Azure DevOps,但在此課程模組中,您將使用 Azure DevOps 部署至 Azure 資源。 若要簡化此程式,請使用相同的Microsoft帳戶來登入 Azure 和 Azure DevOps。

如果您使用不同的Microsoft帳戶來登入 Azure 和 Azure DevOps,請在您用來登入 Azure 的 Microsoft 帳戶底下,將具有 基本 存取層級的使用者新增至您的 DevOps 組織。 如需詳細資訊,請參閱 將使用者新增至您的組織或專案

然後,註銷 Azure DevOps,並使用您用來登入 Azure 訂用帳戶的相同帳戶重新登入。

取得 Azure DevOps 專案

請確定已設定 Azure DevOps 組織,以完成本課程模組的其餘部分。 若要這樣做,您將執行範本,以在 Azure DevOps 中建立專案。

此學習路徑中的課程模組有難度分級。 請跟隨 Tailspin Web 小組完成 DevOps 旅程。 為了學習目的,每個課程模組都有自己的 Azure DevOps 專案。

執行範本

執行用於設定 Azure DevOps 組織的範本。

這很重要

不再支援 Azure DevOps 示範產生器,但您仍然可以使用它來建立示範環境。 目前沒有替代品,其功能或可用性可能會在未來發生變化。

  1. 在 Visual Studio 或您選擇的 IDE 中取得並執行 ADOGenerator 專案

  2. 當系統提示您 從範本清單中輸入範本號碼時,輸入 39 以便於 使用 Azure Pipelines 自動化 Docker 容器部署,然後按 Enter

  3. 選擇您的驗證方法。 您可以 設定並使用個人存取令牌 (PAT) 或使用裝置登入。

    備註

    如果您設定 PAT,請務必授權必要的 範圍。 在此課程模組中,您可以使用 完整存取權,但在真實世界中,您應該確保只授與必要的範圍。

  4. 輸入您的 Azure DevOps 組織名稱,然後按 Enter

  5. 如果出現提示,請輸入您的 Azure DevOps PAT,然後按 Enter

  6. 輸入項目名稱,例如 Space Game - web - Docker,然後按 Enter

  7. 建立項目之後,請移至瀏覽器 (at https://dev.azure.com/<your-organization-name>/) 中的 Azure DevOps 組織,然後選取專案。

派生存放庫

如果您尚未建立 mslearn-tailspin-spacegame-web-docker 存放庫的分支,請加以建立。

  1. 在 GitHub 上,移至 mslearn-tailspin-spacegame-web-docker 存放庫。

  2. 選取畫面右上方的 Fork

  3. 選擇您的 GitHub 帳戶作為 [擁有者],然後選取 [建立分支]

這很重要

在本課程模組中, [清除您的 Azure DevOps 環境 ] 頁面包含重要的清除步驟。 執行清除有助於確保您不會用盡免費建置時間。 即使未完成本課程模組,也請務必執行清除步驟。

設定專案的可見度

一開始,GitHub 上 Space Game 存放庫的分支會設定為公用,而 Azure DevOps 範本所建立的專案設為私人。 GitHub 上的公用存放庫可供任何人存取,而私人存放庫只能存取您,以及您選擇與其共用的人員。 同樣地,在 Azure DevOps 上,公用專案會提供非驗證使用者的唯讀存取權,而私人專案則要求使用者獲得存取權,並經過驗證才能存取服務。

目前,為了本課程模組的目的,不需要修改任何這些設定。 不過,對於您的個人專案,您必須判斷您想要授與其他人的可見度和存取權。 例如,如果專案是開放原始碼,則您可以選擇將 GitHub 存放庫和 Azure DevOps 專案設為公用。 如果專案是專屬的,則您通常會將 GitHub 存放庫和 Azure DevOps 專案設為私人。

稍後,您可能會發現下列資源有助於判斷哪一個選項最適合您的專案:

將工作項目移至 [執行中]

在這裡,您會在 Azure Boards 上將工作專案指派給自己。 您也將會工作項目移至 [正在進行] 狀態。 實際上,您和您的小組會在每個衝刺或工作迭代開始時建立工作項目。

這項工作任務提供您一份檢查清單以供參考。 它可讓其他小組成員瞭解您正在處理的工作,以及剩餘多少工作。 工作項目也有助於實施「進行中的工作」(WIP) 限制,以免小組一次處理太多工作。

在這裡,您會將第一個工作項目使用 Docker 建立網站的容器版本移至進行中欄,然後將自己指派給該工作項目。

設定工作項目:

  1. 從 Azure DevOps,流覽至 Boards。 然後,從功能表中選取 [Boards]

    Azure DevOps 的螢幕快照,其中顯示 Boards 功能表的位置。

  2. 使用 Docker 工作專案建立網站的容器版本 中,選取卡片底部的向下箭號,然後將工作專案指派給自己。

    Azure Boards 的螢幕快照,其中顯示向下箭號的位置。

  3. 將工作專案從 [To Do ] 資料行移至 [執行中] 資料行。

    Azure Boards 的螢幕擷取畫面,顯示 [執行中] 資料行中的卡片。

在此模組結束時,您將在完成任務後,將卡片移至 完成 列。

建立 Azure App Service 環境

在本課程模組中,您將採用 Azure CLI 來啟動部署和執行 App Service 實例所需的資源。 您可以從終端機或透過 Visual Studio Code 存取 Azure CLI。

這很重要

您必須有自己的 Azure 訂用帳戶,才能完成本課程模組中的練習。

在 Azure 入口網站中啟動 Cloud Shell

  1. 流覽至 Azure 入口網站 並登入。

  2. 從功能表欄選取 Cloud Shell ,然後選取 Bash 體驗。

    Azure 入口網站的螢幕快照,其中顯示 Cloud Shell 功能表項的位置。

    備註

    Cloud Shell 需要有 Azure 儲存體資源,才能保存您在 Cloud Shell 中建立的任何檔案。 第一次開啟 Cloud Shell 時,系統會提示您建立資源群組、儲存體帳戶,以及 Azure 檔案儲存體共用。 所有未來的 Cloud Shell 工作階段都會自動使用此設定。

選取 Azure 區域

區域是位於特定地理位置內的一或多個 Azure 資料中心。 美國東部、美國西部和北歐是一些區域範例。 每個 Azure 資源,例如 App Service 實例,都會配置給特定區域。

若要簡化執行命令的程式,請從選取預設區域開始。 指定預設區域之後,除非明確指定不同的區域,否則後續命令預設會使用該區域。

  1. 執行下列命令來列出 Azure 訂用帳戶可用的區域。

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. 從輸出中的 [ 名稱 ] 資料行選取鄰近位置的區域。 例如,您可以選擇 eastasiawestus2

  3. 執行下列命令來設定預設區域。 將預留位置取代為您稍早所選取的區域名稱。

    az configure --defaults location=<REGION>
    

    本範例會將 westus2 設定為預設區域:

    az configure --defaults location=westus2
    

建立 Bash 變數

在本節中,您將建立Bash變數,讓設定程式更方便且較不容易出錯。 針對共用文字字串使用變數有助於避免意外錯字。

  1. 從 Cloud Shell 產生隨機數。 這可讓在下一個步驟中為特定服務建立全域唯一名稱更容易。

    resourceSuffix=$RANDOM
    
  2. 為您的 App Service Web 應用程式和 Azure Container Registry 建立全域唯一的名稱。 在這些命令中使用雙引號會提示Bash使用內嵌語法來插補變數。

    webName="tailspin-space-game-web-${resourceSuffix}"
    registryName="tailspinspacegame${resourceSuffix}"
    
  3. 再建立兩個Bash變數來儲存資源群組和App Service方案的名稱。

    rgName='tailspin-space-game-rg'
    planName='tailspin-space-game-asp'
    

建立 Azure 資源

備註

為了學習目的,您將會看到這裡的預設網路設定。 這些設定可讓您的網站從因特網存取。 在實務上,您可以設定 Azure 虛擬網路,將您的網站放在不是因特網路由的網路中,且只有您和小組可以存取。 稍後,您可以重新設定網路,讓使用者可以使用網站。

  1. 執行下列 az group create 命令,以使用稍早定義的名稱來建立資源群組。

    az group create --name $rgName
    
  2. 執行下列 az acr create 命令,以使用稍早定義的名稱來建立 Azure Container Registry。

    az acr create --name $registryName \
      --resource-group $rgName \
      --sku Standard \
      --admin-enabled true
    
  3. 執行下列 az appservice plan create 命令,以使用稍早定義的名稱來建立App Service 方案。

    az appservice plan create \
      --name $planName \
      --resource-group $rgName \
      --sku B1 \
      --is-linux
    

    --sku 引數會指定 B1 方案。 此方案會在基本層上執行。 --is-linux 引數指定使用 Linux 背景工作角色。

    這很重要

    如果您的 Azure 訂用帳戶中無法使用 B1 SKU,請 選擇不同的方案 ,例如 S1 (標準)。

  4. 執行下列 az webapp create 命令來建立App Service實例。

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --deployment-container-image-name $registryName.azurecr.io/web:latest
    
  5. 執行下列 az webapp list 命令來列出 App Service 實例的主機名和狀態。

    az webapp list \
      --resource-group $rgName \
      --query "[].{hostName: defaultHostName, state: state}" \
      --output table
    

    記下執行中服務的主機名。 您稍後會在驗證工作時用到它。 以下為範例:

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  6. 執行下列 az acr list 命令以列出 Azure Container Registry 實例的登入伺服器。 稍後建立管線變數時,您將需要此伺服器名稱。

    az acr list \
      --resource-group $rgName \
      --query "[].{loginServer: loginServer}" \
      --output table
    

    請注意登入伺服器。 您稍後會在設定管線時用到它。 以下為範例:

    LoginServer
    ---------------------------------
    tailspinspacegame4692.azurecr.io    
    

這很重要

此課程模組中的 [清除您的 Azure DevOps 環境] 頁面包含重要的清除步驟。 清理可以確保您在完成本模組之後,不會被收取 Azure 資源的費用。 請務必執行清除步驟,即使您未完成此課程模組亦然。

在 Azure Pipelines 中建立管線變數

在這裡,您將在管線中新增變數,以將 Web 應用程式的名稱儲存在 App Service 中。 此外,您將新增 Azure Container Registry 的名稱。

您可以在管線設定中硬式編碼這些名稱,但如果您將其定義為變數,則您的組態將會更容易重複使用。 此外,如果您的實例名稱變更,您可以更新變數並觸發管線,而不需要修改您的組態。

若要新增變數:

  1. 在 Azure DevOps 中,移至 您的 Space Game - web - Docker 專案。

  2. 在 [管線] 下,選取 [程式庫]

    Azure Pipelines 的螢幕快照,其中顯示 [程式庫] 功能表選項。

  3. 選取 [+ 變數群組]。

  4. [屬性] 底下,輸入 [發行 ] 以取得變數組名。

  5. 在 [變數] 下,選取 [+ 新增]

  6. 如需變數的名稱,請輸入 WebAppName。 針對值,輸入上面建立的 App Service 實例名稱,例如 tailspin-space-game-web-4692

    這很重要

    設定 App Service 實例的名稱,而不是其主機名。 在此範例中,您會輸入 tailspin-space-game-web-4692 ,而不是 tailspin-space-game-web-4692.azurewebsites.net

  7. 請重複此流程,新增另一個名為 RegistryName 的變數,並將其值設為您的 Azure Container Registry 登入伺服器,例如 tailspinspacegame4692.azurecr.io。 在頁面頂端,選取儲存

  8. 選取管道權限,然後選取+符號以新增管道。 選取 mslearn-tailspin-spacegame-web-docker,以授權管線存取變數群組。

  9. 選取頁面頂端的 [ 儲存 ] 以儲存變數。 您的變數群組看起來應該如下所示:

    Azure Pipeline 的螢幕快照,其中顯示變數群組。群組包含兩個變數。

建立必要的服務連線

在這裡,您將建立服務連線,讓 Azure Pipelines 存取您的 Azure 訂用帳戶。 Azure Pipelines 會使用此服務連線將網站部署至 App Service。 您在上一個課程模組中建立了類似的服務連線。 您也會建立 Docker 登錄連線,將您的容器發佈至 Azure Container Registry。

這很重要

請確定您已使用相同的Microsoft帳戶登入 Azure 入口網站和 Azure DevOps。

  1. 在 Azure DevOps 中,移至 您的 Space Game - web - Docker 專案。

  2. 從頁面的下角,選取 [項目設定]。

  3. [管線] 底下,選取 [服務連線]。

  4. 選取 [建立服務連線],然後選擇 [Azure Resource Manager],然後選取 [ 下一步]。

  5. 在頁面頂端附近, 應用程式註冊(自動)

  6. 填寫下列欄位:

    領域 價值觀
    範圍層級 訂閱
    訂閱 您的 Azure 訂用帳戶
    資源群組 tailspin-space-game-rg
    服務連線名稱 資源管理器 - Tailspin - 太空遊戲

    在程式中,系統可能會提示您登入Microsoft帳戶。

  7. 確認已選取 [為所有管線授與存取權限]

  8. 選取 [ 儲存]。

    Azure DevOps 會執行測試連線,以確認它可以連線到您的 Azure 訂用帳戶。 如果 Azure DevOps 無法連線,您就有機會第二次登入。

  9. 選取 [新增服務連線],然後選擇 [Docker 登錄],然後選取 [ 下一步]。

  10. 在頁面頂端附近,選取 [Azure Container Registry]。

  11. 選取 服務主體 作為 驗證類型

  12. 填寫下列欄位:

    領域 價值觀
    訂閱 您的 Azure 訂用帳戶
    Azure 容器註冊表 選取您稍早建立的項目
    服務連線名稱 容器登錄庫連線
  13. 確認已選取 [為所有管線授與存取權限]

  14. 完成時,請選取 [ 儲存 ]。