發行管線和成品來源

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

透過 Azure Pipelines,您可以從各種成品來源部署成品,並將工作流程與不同類型的成品存放庫整合。 版本可以連結至多個成品來源,其中一個會指定為主要來源。

成品來源

Azure Pipelines 支援各種存放庫、原始檔控制工具和持續整合系統。

建立發行時,您可以指定成品來源的版本。 根據預設,版本會使用最新版的來源成品。 您也可以指定標記、特定版本,或允許使用者在發行建立時指定版本,以選擇使用特定分支的最新組建。

顯示如何將成品新增至傳統發行管線的螢幕快照。

如果您連結多個成品,您可以指定哪一個是主要來源(預設值)。 主要成品來源可用來設定一些預先定義的 變數。 它也可用於 命名版本

顯示如何設定主要來源成品的螢幕快照。

注意

Default version 拉式清單專案取決於連結組建定義的來源類型。

  • 所有存放函式庫型態都支援下列選項: Specify at the time of release creationSpecific versionLatest

  • Latest from a specific branch with tags 下列存放函式庫型態支援和 Latest from the build pipeline default branch with tags 選項: TfsGitGitHubBitbucketGitHubEnterprise

  • Latest from the build pipeline default branch with tags 組建定義不支援 XAML

下列各節說明如何使用不同類型的成品來源。

成品來源 - Azure Pipelines

您可以將發行管線連結至任何 Azure Pipelines 組建。 您也可以連結多個組建管線,並指定其預設值,並在多個組建來源上設定部署觸發程式。 當任何組建完成時,它會觸發發行的建立。

使用 Azure Pipelines 作為成品來源時,可以使用下列功能:

功能 描述
自動觸發程式版本 當有新的組建成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。
成品變數 Azure Pipelines 來源支援許多 成品變數
工作項目和認可 您可以連結 Azure Pipelines 工作專案,其會顯示在版本詳細數據中。 當您使用 Git 或 TFVC 原始檔控制項時,就會顯示認可。
成品下載 根據預設,組建成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,以 略過下載 成品。
部署階段 組建摘要會列出成品部署所在的所有部署階段。

注意

您必須在 組建管線中包含發行成品工作 。 針對 YAML 組建管線,會隱含發佈名稱 除的成品。

根據預設,發行會以集合層級作業授權範圍執行。 這表示版本可以存取組織中所有專案中的資源(或 Azure DevOps Server 的集合)。 從其他專案鏈接組建成品時,這非常有用。 您可以在專案設定中啟用 將作業授權範圍限製為目前專案的發行管線 ,以限制專案成品的存取權。

若要設定組織的作業授權範圍:

  • 流覽至您的 組織設定
  • 選取 [管線] 底下的 [設定]。
  • 開啟 [ 將作業授權範圍限制為目前專案],讓發行管線 將範圍限製為目前專案。 這是良好安全性措施的建議設定。

若要設定特定項目的作業授權範圍:

  • 流覽至您的 項目設定
  • 選取 [管線] 底下的 [設定]。
  • 開啟 [將作業授權範圍限制為目前專案] 切換 ,讓發行管線 將範圍限制為目前的專案。 這是建議的設定,因為它可增強管線的安全性。

注意

如果範圍設定為組織層級的專案,則您無法變更每個專案中的範圍。

發行中的所有作業都會執行,並將作業授權範圍設定為集合。 換句話說,這些作業可以存取專案集合中所有專案中的資源。

成品來源 - 版本控制

在某些情況下,您可能會想要直接從不同的原始檔控件取用成品,而不需透過組建管線傳遞。 例如:

  • 開發不需要明確建置管線的 PHP 或 JavaScript 應用程式。

  • 您可以管理不同版本控制存放庫中各種階段的組態,而且您想要直接從版本控制取用這些組態檔,作為部署管線的一部分。

  • 您可以管理基礎結構和組態即程序代碼,而您想要在版本控制存放庫中管理這些檔案。

因為您可以在單一發行管線中設定多個成品來源,因此您可以將產生應用程式的二進位檔的組建管線,以及將組態檔儲存至相同管線的版本控制存放庫,並在部署時同時使用這兩組成品。

Azure Pipelines 支援 Team Foundation 版本控制 (TFVC) 存放庫、Git 存放庫和 GitHub 存放庫。

您可以將發行管線連結至集合中任何專案中的任何 Git 或 TFVC 存放庫(您需要這些存放庫的讀取許可權)。 在相同集合內部署版本控制成品時,不需要進行其他設定。

當您連結 GitHub 存放庫並選取分支時,您可以在儲存成品之後編輯成品類型的預設屬性。 這特別適用於成品變更穩定版本的分支,且持續傳遞版本應該使用此分支來取得較新版本的成品。 您也可以指定結帳的詳細數據,例如結帳子模組和 LFS 追蹤的檔案,以及淺層擷取深度。

當您連結 TFVC 分支時,可以指定要在建立發行時部署的變更集。

使用 TFVC、Git 和 GitHub 作為成品來源時,可以使用下列功能:

功能 描述
自動觸發程式版本 當有新的組建成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。
成品變數 Azure Pipelines 來源支援許多 成品變數
工作項目和認可 您可以連結 Azure Pipelines 工作專案,其會顯示在版本詳細數據中。 當您使用 Git 或 TFVC 原始檔控制項時,就會顯示認可。
成品下載 根據預設,組建成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,以 略過下載 成品。

根據預設,發行會以集合層級作業授權範圍執行。 這表示版本可以存取組織中所有專案中的資源(或 Azure DevOps Server 的集合)。 從其他專案鏈接組建成品時,這非常有用。 您可以在專案設定中啟用 將作業授權範圍限製為目前專案的發行管線 ,以限制專案成品的存取權。

成品來源 - Jenkins

若要取用 Jenkins 成品,您必須建立服務連線,以向 Jenkins 伺服器進行驗證。 如需詳細資訊,請參閱 管理服務連線Jenkins 服務連線 。 Jenkins 項目必須使用建置後動作來設定,才能發佈成品。

使用 Jenkins 作為成品來源時,可以使用下列功能:

功能 描述
自動觸發程式版本 當有新的組建成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。
成品變數 Azure Pipelines 來源支援許多 成品變數
工作項目和認可 您可以連結 Azure Pipelines 工作專案,其會顯示在版本詳細數據中。 當您使用 Git 或 TFVC 原始檔控制項時,就會顯示認可。
成品下載 根據預設,組建成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,以 略過下載 成品。

Jenkins 組建所產生的成品通常會傳播至儲存存放庫以進行封存和共用。 Azure Blob 記憶體是其中一個支援的存放庫,可讓您取用 Jenkins 專案,以發行管線中的成品來源的形式發佈至 Azure 記憶體。 Azure Pipelines 會自動將成品從 Azure 下載到執行管線的代理程式。 在此案例中,不需要代理程式與 Jenkins 伺服器之間的連線。 您可以使用 Microsoft 裝載的代理程式,而不需將伺服器公開至因特網。

注意

例如,如果 Azure Pipelines 位於您的企業網路內,可能無法連絡 Jenkins 伺服器。 如果是這種情況,您可以藉由設定可存取 Jenkins 伺服器的內部部署代理程式,來整合 Azure Pipelines 與 Jenkins。 連結至組建時,您將看不到 Jenkins 項目的名稱,但您可以在 [URL] 文字欄位中輸入名稱。

成品來源 - 容器

部署容器化應用程式時,會先將容器映像推送至容器登錄。 接著,您可以將容器映射部署至適用於容器的 Azure Web 應用程式或 Docker/Kubernetes 叢集。 您必須建立服務連線,以向 Azure 進行驗證。 如需詳細資訊,請參閱 管理服務連線

使用 Azure 容器作為成品來源時,可以使用下列功能:

功能 描述
自動觸發程式版本 當有新的組建成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。
成品變數 Azure Pipelines 來源支援許多 成品變數
工作項目和認可 您可以連結 Azure Pipelines 工作專案,其會顯示在版本詳細數據中。 當您使用 Git 或 TFVC 原始檔控制項時,就會顯示認可。
成品下載 根據預設,組建成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,以 略過下載 成品。

注意

使用多個成品來源時,不支援將成品來源對應至觸發特定階段。 每當有推送至任何成品來源時,就會建立發行。 如果您想要這樣做,Azure Pipelines 建議將發行管線分割成多個版本。

成品來源 - Azure Artifacts

以下是您可以使用 Azure Artifacts 作為成品來源的一些案例:

  1. 您的應用程式二進位檔會發佈至 Azure Artifacts,而您想要在發行管線中取用套件。
  2. 您需要在部署工作流程中儲存在 Azure Artifacts 中的其他套件。

在發行管線中使用 Azure Artifacts,您必須選取套件的 摘要套件預設版本 。 您可以選擇挑選 最新版本的套件、使用 特定版本,或在 發行建立時選取版本。 在部署期間,套件會下載/擷取至執行管線的代理程式。

使用 Azure Artifacts 作為成品來源時,可以使用下列功能:

功能 描述
自動觸發程式版本 當有新的組建成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。
成品變數 Azure Pipelines 來源支援許多 成品變數
工作項目和認可 您可以連結 Azure Pipelines 工作專案,其會顯示在版本詳細數據中。 當您使用 Git 或 TFVC 原始檔控制項時,就會顯示認可。
成品下載 根據預設,組建成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,以 略過下載 成品。

處理 Maven 快照集

使用 Maven 快照集時,可以下載多個版本(例如myApplication-2.1.0.BUILD-20190920.220048-3.jar、 、 myApplication-2.1.0.BUILD-20190820.221046-2.jarmyApplication-2.1.0.BUILD-20190820.220331-1.jar 您可能需要移除舊版,且只在部署前保留最新的成品。 在提升許可權的命令提示字元中執行下列 PowerShell 命令,以移除除了具有最高語匯值以外的所有複本:

Get-Item "myApplication*.jar" | Sort-Object -Descending Name | Select-Object -SkipIndex 0 | Remove-Item

注意

您可以在摘要中儲存最多 30 個 Maven 快照集。 達到上限后,Azure Artifacts 會自動將快照集刪除為 25 個。 每次發佈 30 個以上的快照集到您的摘要時,就會自動觸發此程式。

成品來源 - TFS 伺服器

您可以使用 Azure Pipelines 從 TFS 伺服器部署成品,而不必藉由設定內部部署自動化代理程式,在因特網上探索您的伺服器。 成品會下載至內部部署代理程式,然後部署到指定的目標伺服器,而不需要離開您的企業網路。 這很適合客戶利用其內部部署基礎結構的投資,同時利用 Azure Pipelines 版本。

若要使用 TFS 伺服器作為成品來源,您必須從 Visual Studio Marketplace 安裝 適用於 Azure Pipelines 擴充功能的 TFS 成品,然後建立 服務連線 以向 Azure Pipelines 進行驗證。 驗證之後,您就可以將 TFS 組建管線連結至發行管線,然後從 [類型] 下拉功能表中選擇 [外部 TFS 組建]。

使用 TFS 伺服器作為成品來源時,可以使用下列功能:

功能 描述
自動觸發程式版本 當有新的組建成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。
成品變數 Azure Pipelines 來源支援許多 成品變數
工作項目和認可 您可以連結 Azure Pipelines 工作專案,其會顯示在版本詳細數據中。 當您使用 Git 或 TFVC 原始檔控制項時,就會顯示認可。
成品下載 根據預設,組建成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,以 略過下載 成品。

如果 Azure Pipelines 位於您的企業網路內,可能無法連絡內部部署 TFS 伺服器。 在此情況下,您可以設定可存取 TFS 伺服器的內部部署代理程式,以整合 Azure Pipelines 與 TFS。 鏈接至組建時,您將看不到 TFS 專案或建置管線的名稱,但您可以在 URL 文字欄位中包含這些變數。 此外,當您建立發行時,Azure Pipelines 可能無法查詢 TFS 伺服器是否有組建編號。 請改為在適當的欄位中輸入 所需組建的組建 標識碼(而非組建編號),或選取 [最新 組建]。

成品來源 - TeamCity

若要使用 TeamCity 作為成品來源,您必須先從 Visual Studio Marketplace 安裝 適用於 Azure Pipelines 擴充功能的 TeamCity 成品。

完成後,請建立 服務連線 ,以向TeamCity伺服器進行驗證。 然後,您可以將組建成品連結至發行管線。 TeamCity 組建組態必須設定為發佈成品的動作。

使用 TeamCity 作為成品來源時,可以使用下列功能:

功能 描述
自動觸發程式版本 當有新的組建成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。
成品變數 Azure Pipelines 來源支援許多 成品變數
工作項目和認可 您可以連結 Azure Pipelines 工作專案,其會顯示在版本詳細數據中。 當您使用 Git 或 TFVC 原始檔控制項時,就會顯示認可。
成品下載 根據預設,組建成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,以 略過下載 成品。

例如,如果 Azure Pipelines 位於您的企業網路內,可能無法連絡 TeamCity 伺服器。 在此情況下,您可以藉由設定可存取 TeamCity 伺服器的內部部署代理程式,來整合 Azure Pipelines 與 TeamCity。 連結至組建時,您將看不到 TeamCity 項目的名稱,但您可以在 [URL] 文字欄位中輸入此名稱。

成品來源別名

為了確保每個成品下載的唯一性,鏈接至發行管線的每個成品來源都會以稱為 來源別名的特定下載位置自動提供。 您可以使用 變數來存取此位置: $(System.DefaultWorkingDirectory)\[source alias]

使用來源別名可確保重新命名連結的成品來源不需要編輯工作屬性,因為代理程式中定義的下載位置不會變更。

根據預設,來源別名是前置詞為底線的成品來源名稱。 根據成品來源的類型,這會是組建管線、作業名稱、專案名稱或存放庫名稱的名稱。 您可以從發行管線的 [成品] 索引標籤編輯來源別名。

成品下載

當部署完成到階段時,每個來源的版本化成品都會下載到管線代理程式,讓在該階段內執行的工作可以存取這些成品。 下載的成品在發行完成時不會刪除。 不過,當您起始下一個版本時,會刪除下載的成品,並以新的成品集取代。

在起始發行時,代理程式中的每個發行管線都會建立新的唯一資料夾,而且成品會下載到下列資料夾:$(System.DefaultWorkingDirectory)

如果再次部署相同的版本,Azure Pipelines 不會執行任何優化,以避免下載未變更的成品。 此外,因為當您起始新版本時,一律會刪除先前下載的內容,所以 Azure Pipelines 無法對代理程式執行累加式下載。

不過,您可以設定管線,以 略過特定作業或階段的自動下載 ,如果您想要這麼做。