傳統發行管線
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
傳統發行管線為開發人員提供架構,可有效率且安全地將應用程式部署到多個環境。 使用傳統發行管線,您可以將測試和部署程式自動化、設定彈性的部署策略、併入核准工作流程,並確保跨各種階段順暢的應用程式轉換。
發行管線的運作方式
作為每個部署的一部分,Azure Pipelines 會執行下列步驟:
預先部署核准:
觸發新的部署要求時,Azure Pipelines 會在將發行部署到階段之前,先確認是否需要預先部署核准。 如果需要核准,它會傳送電子郵件通知給相關的核准者。
佇列部署作業:
Azure Pipelines 會排程可用 代理程式的部署作業。
代理程式選取:
可用的代理程式會挑選部署作業。 發行管線可以設定為在運行時間動態選取適當的代理程式。
下載成品:
代理程式會擷取並下載版本中指定的所有成品。
執行部署工作:
代理程式會執行部署作業中的所有工作。
產生進度記錄:
代理程式會為每個部署步驟產生完整的記錄,並將其傳回 Azure Pipelines。
部署後核准:
在部署至階段完成之後,Azure Pipelines 會驗證該特定階段是否需要部署後核准。 如果不需要核准,或取得必要的核准之後,它會繼續起始下一個階段的部署。
部署模型
Azure 發行管線支持各種不同的 成品來源, 包括 Jenkins、Azure Artifacts 和 Team City。 下列範例說明使用 Azure 發行管線的部署模型:
在下列範例中,管線是由來自不同組建管線的兩個組建成品所組成。 應用程式一開始會部署到開發階段,然後部署到兩個不同的 QA 階段。 如果兩個 QA 階段中的部署都成功,應用程式將會部署到 Prod ring 1,然後部署到 Prod ring 2。 每個生產通道都代表部署至世界各地不同位置之相同 Web 應用程式的多個實例。
版本與部署
發行是一種建構,可保存 CI/CD 管線中指定的已建立版本化成品集。 其中包含執行發行管線中所有工作和動作所需的所有資訊的快照集,例如階段、工作、觸發程式和核准者等原則,以及部署選項。 一個發行管線中可以有多個版本,而且每個發行管線的相關信息會儲存並顯示在 Azure Pipelines 中,以指定 保留期間為單位。
部署是針對一個階段執行工作的動作,包括執行自動化測試、部署組建成品,以及針對該階段指定的任何其他動作。 起始發行會根據原始發行管線中定義的設定和原則,啟動每個部署。 即使是一個階段,每個版本也可以有多個部署。 當階段的發行部署失敗時,您可以將相同的版本重新部署至該階段。 若要重新部署發行,只要流覽至您要部署的版本,然後選取 [部署]。
下圖顯示發行、發行管線和部署之間的關聯性。
常見問題集
問:為什麼我的部署未觸發?
答:建立發行管線不會自動啟動部署。 以下是一些可能發生這種情況的原因:
部署觸發程式:定義的部署觸發程式可能會導致部署暫停。 當排程的觸發程式或部署至另一個階段完成之前有延遲時,可能會發生這種情況。
佇列原則:這些原則會決定執行順序,以及當發行排入佇列以進行部署時。
預先部署核准或閘道:特定階段可能需要預先部署核准或閘道,以防止部署,直到符合所有已定義條件為止。
問:如何在發行時間編輯變數?
答:在發行管線的 [ 變數 ] 索引標籤中,針對您要在發行排入佇列時修改的變數,選取 [在發行時間 設定設定] 複選框。
之後,在產生新版本時,您就能夠修改這些變數的值。
問:何時更適合修改發行,而不是定義發行的管線?
答:您可以編輯發行實例的核准、工作和變數。 不過,這些編輯只會套用至該實例。 如果您想要將變更套用至所有未來的版本,請改為編輯發行管線。
問:「放棄發行」功能有哪些實用案例?
答:如果您不打算重複使用發行,或想要防止它被使用,您可以放棄發行,如下所示的 Pipelines> (...) >放棄。 部署進行時,您無法放棄發行,您必須先取消部署。
問:如何? 管理新版本的命名?
答:發行管線的預設命名慣例是循序編號,其中版本名稱為 Release-1、 Release-2 等等。 不過,您可以藉由修改版本名稱格式遮罩,彈性地自定義命名配置。 在發行管線的 [ 選項 ] 索引標籤中,流覽至 [一般 ] 頁面,並調整 [發行名稱格式 ] 屬性以符合您的喜好設定。
指定格式遮罩時,您可以使用下列預先定義的變數。 範例:下列版本名稱格式: 組建 $(Build.BuildNumber) $(Build.BuildNumber) 的 Release $(Rev:rrr) 將會建立下列版本: 組建 20170213.2 MySampleAppBuild 的版本 002。
變數 | 描述 |
---|---|
Rev: rr | 至少具有指定數字數目的自動遞增數位。 |
日期/日期:MMddyy | 目前日期,預設格式為 MMddy。 支援 M/MM/MMM/MMMM、d/d/d、y/y/y/y、h/hh/HH、m/mm、s/ss 的任何組合。 |
System.TeamProject | 此組建所屬的項目名稱。 |
Release.ReleaseId | 發行的標識碼,這是專案中所有版本的唯一標識符。 |
Release.DefinitionName | 目前版本所屬之發行管線的名稱。 |
Build.BuildNumber | 版本中包含的組建數目。 如果發行有多個組建,則它是主要組建的數目。 |
Build.DefinitionName | 版本中包含的組建管線名稱。 如果發行有多個組建,則它是主要組建的管線名稱。 |
Artifact.ArtifactType | 連結至發行的成品來源類型。 例如,這可以是 Azure Pipelines 或 Jenkins。 |
Build.SourceBranch | 主要成品來源的分支。 針對 Git,如果分支是 refs/heads/main,則此格式為 main。 針對 Team Foundation 版本控制,如果工作區的根伺服器路徑是 $/teamproject/branch,則這是窗體分支。 此變數未針對 Jenkins 或其他成品來源設定。 |
自訂變數 | 發行管線中定義的全域組態屬性值。 您可以使用發行記錄命令,以 自定義變數更新發行名稱 |
問:如何定義發行的保留期間?
答:請參閱 保留原則 ,以瞭解如何為您的發行管線設定保留原則。