共用方式為


傳統發行管線

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

傳統發行管線為開發人員提供架構,可有效率且安全地將應用程式部署到多個環境。 使用傳統發行管線,您可以將測試和部署程式自動化、設定彈性的部署策略、併入核准工作流程,並確保跨各種階段順暢的應用程式轉換。

發行管線的運作方式

作為每個部署的一部分,Azure Pipelines 會執行下列步驟:

  1. 預先部署核准

    觸發新的部署要求時,Azure Pipelines 會在將發行部署到階段之前,先確認是否需要預先部署核准。 如果需要核准,它會傳送電子郵件通知給相關的核准者。

  2. 佇列部署作業

    Azure Pipelines 會排程可用 代理程式的部署作業。

  3. 代理程式選取

    可用的代理程式會挑選部署作業。 發行管線可以設定為在運行時間動態選取適當的代理程式。

  4. 下載成品

    代理程式會擷取並下載版本中指定的所有成品。

  5. 執行部署工作

    代理程式會執行部署作業中的所有工作。

  6. 產生進度記錄

    代理程式會為每個部署步驟產生完整的記錄,並將其傳回 Azure Pipelines。

  7. 部署後核准

    在部署至階段完成之後,Azure Pipelines 會驗證該特定階段是否需要部署後核准。 如果不需要核准,或取得必要的核准之後,它會繼續起始下一個階段的部署。

顯示 Azure Pipelines 中部署步驟的螢幕快照。

部署模型

Azure 發行管線支持各種不同的 成品來源, 包括 Jenkins、Azure Artifacts 和 Team City。 下列範例說明使用 Azure 發行管線的部署模型:

在下列範例中,管線是由來自不同組建管線的兩個組建成品所組成。 應用程式一開始會部署到開發階段,然後部署到兩個不同的 QA 階段。 如果兩個 QA 階段中的部署都成功,應用程式將會部署到 Prod ring 1,然後部署到 Prod ring 2。 每個生產通道都代表部署至世界各地不同位置之相同 Web 應用程式的多個實例。

顯示發行管線部署步驟的螢幕快照。

版本與部署

發行是一種建構,可保存 CI/CD 管線中指定的已建立版本化成品集。 其中包含執行發行管線中所有工作和動作所需的所有資訊的快照集,例如階段、工作、觸發程式和核准者等原則,以及部署選項。 一個發行管線中可以有多個版本,而且每個發行管線的相關信息會儲存並顯示在 Azure Pipelines 中,以指定 保留期間為單位。

部署是針對一個階段執行工作的動作,包括執行自動化測試、部署組建成品,以及針對該階段指定的任何其他動作。 起始發行會根據原始發行管線中定義的設定和原則,啟動每個部署。 即使是一個階段,每個版本也可以有多個部署。 當階段的發行部署失敗時,您可以將相同的版本重新部署至該階段。 若要重新部署發行,只要流覽至您要部署的版本,然後選取 [部署]。

下圖顯示發行、發行管線和部署之間的關聯性。

說明版本與部署之間差異的圖表。

常見問題集

問:為什麼我的部署未觸發?

答:建立發行管線不會自動啟動部署。 以下是一些可能發生這種情況的原因:

問:如何在發行時間編輯變數?

答:在發行管線的 [ 變數 ] 索引標籤中,針對您要在發行排入佇列時修改的變數,選取 [在發行時間 設定設定] 複選框。

顯示如何在發行時間啟用 settable 功能的螢幕快照。

之後,在產生新版本時,您就能夠修改這些變數的值。

顯示如何在發行時間編輯變數的螢幕快照。

問:何時更適合修改發行,而不是定義發行的管線?

答:您可以編輯發行實例的核准、工作和變數。 不過,這些編輯只會套用至該實例。 如果您想要將變更套用至所有未來的版本,請改為編輯發行管線。

問:「放棄發行」功能有哪些實用案例?

答:如果您不打算重複使用發行,或想要防止它被使用,您可以放棄發行,如下所示的 Pipelines> (...) >放棄。 部署進行時,您無法放棄發行,您必須先取消部署。

顯示如何放棄發行的螢幕快照。

問:如何? 管理新版本的命名?

答:發行管線的預設命名慣例是循序編號,其中版本名稱為 Release-1Release-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 PipelinesJenkins
Build.SourceBranch 主要成品來源分支。 針對 Git,如果分支是 refs/heads/main,則此格式為 main 針對 Team Foundation 版本控制,如果工作區的根伺服器路徑是 $/teamproject/branch,則這是窗體分支 此變數未針對 Jenkins 或其他成品來源設定。
自訂變數 發行管線中定義的全域組態屬性值。 您可以使用發行記錄命令,以 自定義變數更新發行名稱

問:如何定義發行的保留期間?

答:請參閱 保留原則 ,以瞭解如何為您的發行管線設定保留原則。