發行管線
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
注意
在 Microsoft Team Foundation Server (TFS) 2018 和舊版中,組建和發行管線稱為定義、執行稱為組建、服務連線稱為服務端點、階段稱為環境,而作業稱為階段。
注意
本文涵蓋傳統發行管線。 如果您想要使用 YAML 來撰寫 CI/CD 管線,請參閱 建立您的第一個管線。
Azure Pipelines 中的發行管線可協助小組以更快的步調持續將軟體提供給您的客戶,並降低風險。 您可以透過多個階段將軟體的測試與傳遞 完全自動化 到生產環境。 或者,使用 核准 和 隨選部署來設定半自動化程式。
請參閱 Azure Pipelines 中的版本 以瞭解發行和部署,並觀看下列影片以查看發行管線的運作情形。
發行管線如何運作?
發行管線會將管線、階段、工作、發行和部署的資料儲存在 Azure Pipelines 中。
Azure Pipelines 會在每個部署中執行下列步驟:
部署前核准:觸發新的部署要求時,Azure Pipelines 會在將發行部署到階段之前,先檢查是否需要預先部署核准。 如果需要,它會將電子郵件通知傳送給適當的核准者。
佇列部署作業:Azure Pipelines 會在可用的 自動化代理程式上排程部署作業。 代理程式是一項軟體,可在部署中執行工作。
代理程式選取:自動化代理程式會挑選作業。 發行管線的代理程式與在 Azure Pipelines 中執行組建的代理程式完全相同。 發行管線可以包含設定,以在執行時間選取適當的代理程式。
下載成品:代理程式會下載該版本中指定的所有成品,前提是您尚未選擇略過下載。 代理程式目前瞭解兩種類型的成品:Azure Pipelines 成品和 Jenkins 成品。
執行部署工作:代理程式接著會執行部署作業中的所有工作,以將應用程式部署至階段的目標伺服器。
產生進度記錄:代理程式會在執行部署時為每個步驟建立詳細記錄,並將這些記錄推送回 Azure Pipelines。
部署後核准:部署至階段完成時,Azure Pipelines 會檢查該階段是否需要部署後核准。 如果不需要核准,或在完成必要的核准時,它會繼續觸發下一個階段的部署。
發行管線和組建管線有個別的 UI。 管線的主要差異在於不同觸發程式類型的發行管線支援,以及核准和閘道的支援。
如何?使用發行管線嗎?
您可以撰寫應用程式的發行管線,以開始使用 Azure Pipelines 版本。 若要撰寫發行管線,您必須指定組成應用程式和發行管線的成品。
成品是應用程式的可部署元件。 它通常是透過持續整合或建置管線來產生。 Azure Pipelines 版本可以部署各種 成品來源所產生的成品。 例如 Azure Pipelines 組建、Jenkins 或 Team City。
使用階段定義發行管線,並使用核准將部署限制在階段內或移出階段。 使用 作業 和 工作在每個階段定義自動化。 使用 變數 將自動化和 觸發程式 一般化,以控制何時應該自動啟動部署。
請參閱下列可透過發行管線建立模型的發行管線範例:
在此範例中,會從不同的組建管線收集兩個組建的特定版本 (成品) ,以建立網站的版本。 發行會先部署至開發階段,然後再平行分叉至兩個 QA 階段。 如果這兩個 QA 階段中的部署都成功,發行會部署到生產通道 1,然後部署到生產通道 2。 每個生產通道都代表在全球各地部署之相同網站的多個實例。
請參閱下列範例,瞭解如何在階段內建立部署自動化的模型:
在此範例中, 作業 是用來在生產通道 1 內平行地將應用程式部署至世界各地的網站。 所有部署都成功之後,會使用第二個作業,將流量從舊版切換至較新版本。
下:
請參閱下列文章以瞭解如何:
什麼是草稿版本?
草稿版本在 Azure Pipelines 中已被取代,因為您可以在 建立發行時變更變數。
建立草稿版本可讓您根據角色許可權,編輯發行和工作的一些設定,再開始部署。 這些變更僅適用于該版本,且不會影響原始管線的設定。
使用 「...」 建立草稿版本版本清單中的省略號連結:
...或管線定義頁面中的 [發行 ] 下拉式清單:
編輯草稿版本之後,請從草稿發行工具列中選擇 [ 開始 ]。
如何?指定建立發行時要編輯的變數?
在發行管線的 [ 變數 ] 索引標籤中,當您新增變數時,請針對要在發行建立並排入佇列時編輯的變數, 在發行時間設定 Settable 。
然後,當您建立新版本時,您可以編輯這些變數的值。
如何?整合和報告發行狀態?
使用發行管線整合,您可以將部署狀態回報至多個來源,例如存放庫主機、工作專案 (連結或部署) ,或 Jira 問題。
若要設定發行管線整合,請選取 [ 選項 ] 索引標籤,然後從發行管線定義中選取 [ 整合 ]。
向存放庫主機報告部署狀態
如果您的原始程式碼位於Azure Repos,此選項會在Azure Repos頁面上顯示狀態徽章。 徽章會指出部署特定認可的位置,以及部署是否通過或失敗。 根據預設,系統會針對發行管線的所有階段張貼部署狀態。 您也可以選取特定階段以顯示部署狀態。
部署狀態會顯示在下列Azure Repos區域中:
檔案:指出所選分支的最新部署狀態。
認可:指出每個認可 (的部署狀態需要啟用持續整合觸發程式) 。
分支:指出每個分支的最新部署狀態。
注意
如果您的原始程式碼不在Azure Repos中,您可以使用[啟用部署狀態徽章] 功能,在外部存放庫中顯示您的部署狀態。
將部署狀態報表為 [工作]
如果您想要將發行管線連結至工作專案,請選取此選項。 部署狀態會顯示在工作專案的 [ 連結 ] 索引標籤中。
向 Boards 報告部署狀態
如果您想要將發行管線連結至工作專案,並在工作專案的 [ 詳細 資料] 索引標籤中顯示部署狀態,請選取此選項。
啟用部署狀態徽章
如果您想要在外部網站上顯示部署狀態,請選取此選項。 您可以複製階段徽章,並將其新增至您的網站,以取得部署狀態的視覺效果:
選取 [啟用部署狀態徽章]。
選取您要顯示狀態的階段。 根據預設,會選取所有階段。
複製徽章 URL,並將其新增至您的網站或 GitHub 讀我檔案,以顯示部署狀態。
向 Jira 報告部署狀態
如果您想要將發行管線連結至 Jira 問題,請選取此選項。 您必須安裝 適用于 Jira 的 Azure Pipelines ,並將 Azure DevOps 組織與您的 Jira 帳戶連線。 如需詳細資訊,請參閱 Jira 整合 教學課程。
何時應該編輯發行,而不是定義它的管線?
您可以編輯先前部署版本的核准、工作和變數。 請勿在建立發行的管線中編輯這些值。 不過,這些編輯僅適用于重新部署成品時所產生的版本。 如果您想要將編輯套用至所有未來的版本和部署,請選擇改為編輯發行管線的選項。
何時和為何要放棄發行?
建立 發行之後,您可以將成品重新部署至該版本中定義的任何階段。 如果您想要執行一般手動發行,或設定使用此版本重新部署成品的持續整合 階段觸發程式 ,這會很有用。
如果您不打算重複使用發行,或想要防止它重新部署成品,您可以使用從管線的 [管線] 檢視中的省略號 (...) 圖示來放棄發行。
當部署正在進行時,您無法放棄發行,您必須先取消部署。
如何?透過電子郵件傳送發行摘要嗎?
觸發發行並完成之後,您可能會想要以電子郵件傳送摘要給專案關係人。 在管線檢視的 [管線] 檢視中,使用從省略號 (...) 圖示開啟的功能表上的 [傳送電子郵件] 選項。
在 [ 傳送發行摘要郵件 ] 視窗中,您可以只選取發行摘要的某些區段,進一步自訂電子郵件中傳送的資訊。
如何?管理新版本的名稱嗎?
發行管線的版本名稱預設為循序編號。 第一個版本名為 Release-1、下一個版本是 Release-2等等。 您可以編輯版本名稱格式遮罩來變更此命名配置。 在發行管線的 [選項] 索引標籤中,編輯 [一般] 頁面中的 [發行名稱格式] 屬性。
指定格式遮罩時,您可以使用下列預先定義的變數。
變數 | 描述 |
---|---|
Rev:rr | 具有至少指定數位數目的自動遞增數位。 |
日期/日期:MMddyy | 目前日期,預設格式為 MMddyy。 支援 M/MM/MMM/MMMM、d/d/d/ddd、y/yy/yyyy/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,則此為表單主要。 對於Team Foundation 版本控制,如果工作區的根伺服器路徑是$/teamproject/branch,則此為表單分支。 此變數未針對 Jenkins 或其他成品來源設定。 |
自訂變數 | 發行管線中定義的通用群組態屬性值。 您可以使用發行記錄命令,使用自訂變數來更新發行名稱 |
例如,版本名稱格式 Release $(Rev:rrr) for build $(Build.BuildNumber) $(Build.DefinitionName)
會使用 組建 20170213.2 MySampleAppBuild等名稱來建立版本。
如何?指定發行的保留期間?
您可以自訂必須保留此管線的發行時間長度。 如需詳細資訊,請參閱 發行保留。
如何?使用和管理發行歷程記錄?
每次儲存發行管線時,Azure Pipelines 都會保留變更的複本。 此複本可讓您比較稍後的變更,特別是在偵錯部署失敗時。
如何?設定為在組建中自動連結新工作?
當我們建立工作專案與組建/發行之間的可追蹤性時,有下列兩個層面:
- 列出新建置為組建一部分的工作專案。 當您查看組建實例時,可以找到此專案。
- 列出此工作專案內建的組建。 您可以在工作專案表單的 [開發] 區段中找到清單。 [自動連結此組建中的新工作] 設定與計算第一個專案符號的方式無關。 它只會影響我們計算第二個專案符號專案的方式。
第一個專案符號的計算如下所示:例如,您已啟動新的組建。 無論設定為何,我們會計算組建的新認可清單。 我們會執行下列工作:
- 我們發現正在建置的認可 c2。
- 我們發現在相同分支的最後一個成功建置中建置的認可 c1 (Build.SourceBranch) 。
- 我們會在認可樹狀結構) 中找到 c1 與 c2 (之間的所有認可。
可能發生在相同分支上沒有最後一個已知成功的建置。 例如,當您第一次在分支上執行組建時,或當分支上所有先前的組建都已刪除時, (可能透過保留原則) 。 在這些情況下,清單可能很長。
一旦擁有認可清單,我們會列舉與每個認可相關聯的所有工作專案。 這是您在組建中看到的清單。
立即開始使用!
完成以下步驟: