Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
在舊版的 Azure Pipelines 中,將應用程式部署至多個伺服器需要大量的規劃和維護。 必須手動啟用 Windows PowerShell 遠端處理,需要開啟特定埠,而且必須在每部伺服器上安裝部署代理程式。 管理首度部署也需要手動介入。 隨著 部署群組的引入,這些挑戰已大大簡化。
部署群組會在群組中的每個目標伺服器上安裝部署代理程式,並讓發行管線在這些伺服器之間逐步部署應用程式。 您可以建立多個管線以進行轉出部署,以允許分階段將應用程式更新傳遞至不同的使用者群組。
備註
部署群組用於傳統管線。 如果您使用 YAML 管線,請參閱 環境。
先決條件
| 產品 | 要求 |
|---|---|
| Azure DevOps | - Azure DevOps 組織。 - Azure DevOps 項目。 |
| Azure DevOps 示範產生器 |
-
設定示範產生器。 - 建立 新的 Azure DevOps 專案 ,並確定選擇 DeploymentGroups 範本 (清單中的數字 15) 。 |
| Azure | - Azure 訂用帳戶。 |
在 Azure 中設定資源
本節將引導您使用 ARM 範本設定 Azure 資源。 它會佈建六部已設定 IIS 的虛擬機器 (VM) 網頁伺服器、一個 SQL Server VM (資料庫伺服器)、一個 Azure 負載平衡器,以及所有必要的網路連線。
填寫必要資訊,然後選取 [ 檢閱 + 建立]。 您可以使用任何允許的使用者名稱和密碼組合,因為它們不會在本教學課程中再次使用。 Env 字首名稱會新增至所有資源名稱,以確保全域唯一性。 使用個人或隨機的東西。 如果您在驗證或建立期間遇到命名衝突,請嘗試變更此值並重新部署。 佈建通常需要 10-15 分鐘。
驗證完成後,選取 [ 建立 ] 以部署您的資源。
部署完成後,請移至 Azure 入口網站中的資源群組,以檢閱產生的資源。 選取名稱中具有 sqlSrv 的 DB 伺服器 VM,以檢視其詳細數據。
複製 DNS 名稱 ,因為您在稍後的步驟中需要它。
建立部署群組
部署群組是機器的集合,每部機器都安裝了部署代理程式。 這些機器會與 Azure Pipelines 通訊,以協調應用程式部署。
流覽至您稍早使用示範產生器建立的 Azure DevOps 專案。
選取 [管線>部署群組]。
選取 新增部署群組。
輸入 [發行] 作為 [部署群組名稱],然後選取 [建立]。 將產生註冊腳本。 您可以使用此指令碼來登錄目標伺服器,並手動安裝部署代理程式。 不過,在本教學課程中,目標伺服器會自動註冊為發行管線的一部分。
建立個人存取權杖
從您的 Azure DevOps 專案中,選取 [使用者設定] 圖示,然後選取 [個人存取權杖]。
選取 [新增權杖],輸入 PAT 的名稱,然後選擇到期日。
選取 [範圍] 的 [自訂定義],選取 [顯示所有範圍],然後檢查下列範圍:
- 專案和團隊 ->讀取和寫入。
- 代理程式集區 ->讀取和管理
- 部署群組 ->讀取和管理。
完成時選取 [ 建立 ],然後複製下一節中您需要的 PAT。
設定發行管線
傳統發行管線範本包含一個代理程式作業,即 代理程式階段,其會在代理程式集區中的代理程式上執行工作。 它也包含兩個部署群組作業: 部署群組階段 和 IIS 部署階段。 部署群組作業會在部署群組中定義的機器上執行工作。 請依照下列步驟設定每個工作。
設定代理程式作業
流覽至您的 Azure DevOps 專案,然後選取 [管線>版本]。
選取部署群組版本定義,然後選取編輯。
選取 [工作] 索引標籤,以檢視管線中的部署工作。
選取 [代理程式階段 ] 階段,然後選擇 Azure Pipelines 集區和 windows-latest 規格。
選取 [Azure 資源群組部署 ] 工作,選取您稍早用來建立資源的 Azure 訂用帳戶 ,然後選取 [授權] 以授權連線。 授權之後,請選取您為本教學課程建立的 資源群組 。
此工作會在 Azure 中的虛擬機器上執行,而且必須能夠連線回管線,才能完成部署群組需求。 若要保護連線,必須使用您稍早建立的個人存取權杖 (PAT) 來設定服務連線。 在相同的工作內向下捲動,然後選取 [Azure Pipelines 服務連線] 底下的 [新增]。
在 [新增服務連線] 面板中,輸入 Azure DevOps 組織的
https://dev.azure.com/organizationName]。 貼上您稍早建立的 個人存取權杖 ,指定 服務連線名稱,然後核取授 與所有管線的存取權限 方塊。 選取 [驗證並在完成後儲存 ]。
向下捲動 Azure 資源群組部署 工作,然後從下拉式功能表中選取您的 小組專案 和您稍早建立的 部署群組 。
設定部署群組作業
從 部署群組 版本定義中,選取部署 群組階段 作業。 此工作會在部署群組中定義的機器上執行工作。 此任務使用 SQL-Svr-DB 標籤來部署至部署群組中的目標子集。 在 [部署群組 ] 下拉式清單下,選取您稍早建立的 [發行 部署群組]。
選取 [IIS 部署階段 ] 作業。 此作業會使用 WebSrv 標籤,將 Web 應用程式部署至 Web 伺服器的子集。 從下拉式清單中選擇您先前建立的 部署群組 。
[ 中斷 Azure 網路負載平衡器] 和 [ 連線 Azure 網路負載平衡器 ] 工作已被取代。 您現在可以透過右鍵按一下任務並選取 停用選取任務 來停用它們。
IIS Web 應用程式管理和 IIS Web 應用程式部署工作會預先填入,不需要變更。
選取左上角的 [變數] 索引標籤,選取 [管線變數],然後提供下列值。 將 DefaultConnectionString 變數中的預留位置取代為您稍早複製的 SQL Server DNS 名稱:
變數名稱 變數值 資料庫名稱 PartsUnlimited-Dev DBPassword xxxxxxxx DBUserName xxxxxxxx DefaultConnectionString 數據源=[YOUR_DNS_NAME];初始目錄=PartsUnlimited-Dev;使用者 ID=xxxxxxxx;密碼=xxxxxxxx;MultipleActiveResultSets=False;連線逾時=30; 伺服器名稱 localhost 選取 [儲存],視需要新增註解,然後選取 [確定]。
小提示
如果您收到必須將 DefaultConnectionString 變數儲存為密碼的錯誤,請選取其值旁邊的掛鎖圖示以保護它。
建立發行和部署應用程式
現在已設定並儲存版本定義,您可以繼續建立版本,將 Web 應用程式部署至 Azure。 不過,在開始發行之前,您必須確定建置管線至少已執行一次。 這會產生部署所需的管線成品。 如果您嘗試在建置管線之前執行發行管線,則發行面板中的 [成品] 區段將會是空的。 請遵循下列步驟來執行管線、產生管線成品,然後建立新版本:
從您的 Azure DevOps 專案中,選取 [管線],然後選取 [部署群組 ] 建置管線。
選取 [執行管線]。 在管線執行面板中,選取您的代理程式規格,然後選取執行。
管線順利完成之後,會產生管線成品。 您可以從管線摘要視窗檢視它:
現在移至 [管線>發行],選取您的發行定義,然後選取 [ 建立發行] 以啟動部署管線。
完成時選取 [ 建立 ],然後選取管線執行以開啟概觀。 您應該會看到管線 進行中。 按一下階段以檢視詳細的部署記錄。
在摘要視窗中,您可以看到部署每個階段的狀態:
故障排除
- 無法連線到主伺服器或目標伺服器 ,或已 成功與伺服器建立連線,但在登入過程中發生錯誤。
如果您在執行 [電腦上部署 ] 工作時遇到下列任一錯誤,請遵循下列步驟:
- 驗證您的資料庫:
請確定資料庫是在資源部署期間成功建立。 您可以使用 Azure CLI 或 sqlcmd 來確認這一點:
sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"
如果您的資料庫不存在於清單中,您可以使用下列命令建立新資料庫:
sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
- 驗證您的 SQL Server 驗證:
請確定已啟用 SQL Server 驗證,您的 SQL Server 必須設定為允許 SQL 和 Windows 驗證 (混合模式)。 若要啟用此功能:
一。 使用 SSMS 或 sqlcmd 連線
b。 執行下列查詢:
EXEC xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
N'LoginMode',
REG_DWORD,
2;
c. 重新啟動 SQL Server 服務,讓變更生效:
net stop MSSQLSERVER
net start MSSQLSERVER
- 即使代理程式在我的 VM 上執行,我的某些代理程式仍處於離線狀態
如果您的一個或多個客服專員顯示為離線,您可以嘗試幾種方法。 首先,登入執行代理程式的 VM,然後執行下列命令,以檢查您的 VM 是否解析為同一組 IP。
nslookup dev.azure.com
如果所有 VM 都解析為同一組 IP,請確定負載平衡器已設定正確的輸出規則。 您可以將後端集區新增至 Azure 中的負載平衡器、將 VM 的 NIC 新增至後端集區,然後將它與負載平衡器的輸出規則產生關聯。 要達成此目的:
流覽至 Azure 並尋找您的負載平衡器。
選取 [後端集區],選擇現有的集區或建立新的集區,然後在 [IP 設定] 底下新增您的網頁伺服器。
移至 [負載平衡規則],選取您的負載平衡規則,然後從 [後端集區] 下拉式清單中選擇您的後端集區。
清理資源
本教學課程已建立 Azure DevOps 專案,並在 Azure 中部署資源。 如果您不再需要它們,請按照以下步驟進行清理:
刪除 Azure DevOps 專案:流覽至 [專案設定>概觀>刪除]。
刪除 Azure 資源群組在本教學課程期間建立的所有 Azure 資源都放在相同的資源群組中。 刪除資源群組會移除所有相關聯的資源。 您可以透過 Azure 入口網站或 CLI 來執行此動作:
Azure CLI
az group delete --name <RESOURCE_GROUP_NAME> --yes --no-waitAzure 入口網站
流覽至 Azure 入口網站 >資源群組。
選取您在教學課程中使用的資源群組。
選取 [刪除資源群組],確認名稱,然後選取 [刪除]。