傳統發行管線中的成品來源
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
透過傳統發行管線,您可以從各種來源部署成品。 您可以使用圖形化介面來設定管線,以整合及取用各種服務的成品。 此外,您可以連結來自不同來源的多個成品,並根據需求將一個成品指定為主要來源。
成品來源
Azure Pipelines 支援各種不同的存放庫、服務和 CI/CD 平臺。 建立發行時,您可以指定成品來源的版本。 根據預設,版本會使用最新版的來源成品。 您也可以指定標記、特定版本,或允許使用者在發行建立時指定版本,以選擇使用特定分支的最新組建。
如果您連結多個成品,您可以指定哪一個是主要來源(預設值)。 主要成品來源可用來設定數個預先定義的 變數 ,也可用於 命名版本。
[ 預設版本 ] 下拉式清單選項取決於連結組建定義的來源類型。 所有存放函式庫型態都支援選項 Specify at the time of release creation
、 Specific version
與 Latest
。 不過,Latest from the build pipeline default branch with tags
XAML 組建定義不支援 。
下列各節說明如何使用不同類型的成品來源:
注意
使用多個成品來源時,不支援將成品來源對應至觸發特定階段。 如果您需要這項功能,Azure Pipelines 建議將發行管線分割成多個版本。
Azure Pipelines
您可以將傳統發行管線連結至任何管線成品。 此外,您可以連結多個成品,並在多個組建來源上設定部署觸發程式。 每次有新的組建可供使用時,此設定都會建立發行。 使用 Azure Pipelines 作為成品來源時,可以使用下列功能:
功能 | 描述 |
---|---|
自動觸發程式版本 | 當有新的成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱 傳統發行觸發程式 。 |
成品變數 | 傳統版本中參考的成品支持數個 成品變數 。 |
工作項目和認可 | 連結工作專案以查看它們顯示在版本詳細數據中。 使用 Git 或 TFVC 時,會顯示認可。 |
成品下載 | 根據預設,管線成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,視 需要略過下載 成品。 |
部署階段 | 管線摘要會列出已部署成品的所有部署階段。 |
注意
若要在傳統管線中發佈管線成品,您必須將 PublishPipelineArtifact 工作新增至管線。 在 YAML 管線中, 卸除 成品會隱含發佈。
限制作業授權範圍
根據預設,發行會使用組織層級的作業授權範圍執行,以允許它們存取組織中所有項目的資源。 從其他項目鏈接管線成品時,這非常有用。 若要限制專案成品的存取,您可以針對專案設定中的發行管線啟用將作業授權範圍限製為目前的專案
若要設定組織的作業授權範圍:
登入您的 Azure DevOps 組織。
選取 左下方的 [組織設定 ]。
選取 [管線> ][*設定]。
開啟 [ 將作業授權範圍限制為目前專案] 切換為發行管線 ,以將範圍限製為目前的專案。 建議您增強安全性。
若要設定特定項目的作業授權範圍:
登入您的 Azure DevOps 組織,然後瀏覽至您的專案。
選取 左下方的 [項目設定 ]。
選取 [管線> ][*設定]。
開啟 [ 將作業授權範圍限制為目前專案] 切換為發行管線 ,以將範圍限製為目前的專案。 建議使用此設定來增強管線的安全性。
注意
如果範圍設定在組織層級,就無法在每個專案中個別變更。
注意
根據預設,發行會使用集合層級的作業授權範圍執行,以允許它們存取集合中所有項目的資源。
Azure Repos、GitHub 和 TFVC
在某些情況下,您可能會想要直接從不同的原始檔控件取用成品,而不需透過組建管線傳遞成品。 例如:
開發不需要明確建置管線的 PHP 或 JavaScript 應用程式。
管理不同版本控制存放庫中各種階段的組態,並直接使用這些組態檔作為部署管線的一部分。
在版本控制存放庫中管理基礎結構和組態即程序代碼。
使用 Azure Pipelines,您可以在單一發行管線中設定多個成品來源。 這可讓您鏈接產生應用程式二進位檔的組建管線,以及儲存組態檔的版本控制存放庫,並在部署期間同時使用這兩組成品。
Azure Pipelines 支援 Azure Repos、Team Foundation 版本控制 和 GitHub 存放庫。 您可以鏈接發行管線至專案集合內的任何 Git 或 TFVC 存放庫,前提是您具有讀取許可權。 在相同集合內部署版本控制成品時,不需要進行其他設定。
連結 GitHub 存放庫並選取分支時,您可以在儲存成品之後編輯成品類型的預設屬性。 如果穩定版本分支變更,確保持續傳遞版本針對較新的成品版本使用正確的分支,這會很有用。 您也可以指定簽出詳細數據,例如 子模組、 Git-LFS 追蹤的檔案 包含,以及 淺層擷取深度。
連結 TFVC 分支時,您可以指定要在發行建立期間部署的變更集。
使用 Azure Repos、Git 和 TFVC 作為成品來源時,可以使用下列功能:
功能 | 描述 |
---|---|
自動觸發程式版本 | 當有新的成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。 |
成品變數 | 傳統版本中參考的成品支持數個 成品變數 。 |
工作項目和認可 | 連結工作專案以查看它們顯示在版本詳細數據中。 使用 Git 或 TFVC 時,會顯示認可。 |
成品下載 | 根據預設,管線成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,視 需要略過下載 成品。 |
注意
根據預設,發行會使用組織層級的工作授權範圍執行,讓它們能夠存取組織中所有項目的資源。 從其他項目鏈接管線成品時,這非常有用。 若要限制專案成品的存取,請在 專案設定中啟用將作業授權範圍限制為目前專案的發行管線 。
注意
根據預設,發行會使用集合層級的作業授權範圍執行,以允許它們存取集合中所有項目的資源。 從其他項目鏈接管線成品時,這非常有用。 若要限制專案成品的存取,請在 專案設定中啟用將作業授權範圍限制為目前專案的發行管線 。
Azure Artifacts
以下是您可以使用 Azure Artifacts 作為成品來源的一些案例:
您的應用程式二進位檔會發佈至 Azure Artifacts,而且您想要在發行管線中取用套件。
您需要在部署工作流程中儲存在 Azure Artifacts 中的其他套件。
在發行管線中使用 Azure Artifacts 時,您必須選取套件的 摘要、 套件和 預設版本 。 您可以選擇挑選 最新版本 的套件、使用 特定版本,或在 發行建立時指定 。 在部署期間,套件會下載至執行管線的代理程式。
使用 Azure Artifacts 作為成品來源時,可以使用下列功能:
功能 | 描述 |
---|---|
自動觸發程式版本 | 當有新的成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。 |
成品變數 | 傳統版本中參考的成品支持數個 成品變數 。 |
工作項目和認可 | 連結工作專案以查看它們顯示在版本詳細數據中。 使用 Git 或 TFVC 時,會顯示認可。 |
成品下載 | 根據預設,管線成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,視 需要略過下載 成品。 |
處理 Maven 快照集
使用 Maven 快照集時,可以下載多個版本(例如myApplication-2.1.0.BUILD-20190920.220048-3.jar
、 、 myApplication-2.1.0.BUILD-20190820.221046-2.jar
、 myApplication-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 個快照集。
Azure 容器存放庫和 Docker Hub
部署容器化應用程式時,會先將容器映像推送至容器登錄。 接著,您可以將容器映射部署至適用於容器的 Azure Web 應用程式或 Docker/Kubernetes 叢集。 若要這樣做,您必須先建立服務連線,以向 Azure 或 Docker Hub 進行驗證。 如需詳細資訊,請參閱 Docker 登錄服務連線 。
使用 Azure Container Repository 或 Docker Hub 作為成品來源時,可以使用下列功能:
功能 | 描述 |
---|---|
自動觸發程式版本 | 當有新的成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。 |
成品變數 | 傳統版本中參考的成品支持數個 成品變數 。 |
工作項目和認可 | 連結工作專案以查看它們顯示在版本詳細數據中。 使用 Git 或 TFVC 時,會顯示認可。 |
成品下載 | 根據預設,管線成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,視 需要略過下載 成品。 |
Jenkins
若要取用 Jenkins 成品,您必須建立服務連線,以向 Jenkins 伺服器進行驗證。 如需詳細資訊,請參閱 Jenkins 服務連線 。 此外,您的 Jenkins 項目必須使用建置後動作來設定,才能發佈成品。
Jenkins 組建所產生的成品通常會傳播至儲存存放庫以進行封存和共用。 Azure Blob 儲存體 是這類存放庫之一,可讓您在發行管線中使用發佈至 Azure 儲存體 做為成品來源的 Jenkins 專案。 Azure Pipelines 會自動將這些成品從 Azure 下載到執行管線的代理程式。 在此案例中,不需要代理程式與 Jenkins 伺服器之間的連線,而且可以使用Microsoft裝載的代理程式,而不需將 Jenkins 伺服器公開至因特網。
使用 Jenkins 作為成品來源時,可以使用下列功能:
功能 | 描述 |
---|---|
自動觸發程式版本 | 當有新的成品可用時,可以自動建立新版本(包括 XAML 組建)。 如需詳細資訊,請參閱發行觸發程式。 |
成品變數 | 傳統版本中參考的成品支持數個 成品變數 。 |
工作項目和認可 | 連結工作專案以查看它們顯示在版本詳細數據中。 使用 Git 或 TFVC 時,會顯示認可。 |
成品下載 | 根據預設,管線成品會下載至執行管線的代理程式。 您也可以在階段中設定步驟,視 需要略過下載 成品。 |
注意
如果 Azure Pipelines 位於私人企業網路內,可能無法 Ping 您的 Jenkins 伺服器。 在這種情況下,您可以藉由設定可存取 Jenkins 伺服器的內部部署代理程式,來整合 Azure Pipelines 與 Jenkins。 雖然您在連結至管線時可能不會看到 Jenkins 項目的名稱,但您可以在 [URL] 文字欄位中手動輸入項目名稱。
成品來源別名
為了確保每個成品下載的唯一性,鏈接至發行管線的每個成品來源都會自動指派稱為 來源別名的特定下載位置。 您可以使用 變數來存取此位置: $(System.DefaultWorkingDirectory)\[source alias]
。
使用來源別名可確保重新命名連結的成品來源不需要編輯工作屬性,因為代理程式中定義的下載位置保持不變。
根據預設,來源別名是前置詞為底線的成品來源名稱(例如,_mslearn-tailspin-spacegame-web)。 根據成品來源類型,來源別名可以對應至組建管線、作業名稱、專案名稱或存放庫名稱的名稱。 您可以從發行管線中的 [成品] 索引標籤編輯來源別名。m 發行管線的 [成品] 索引卷標。
成品下載
當階段的部署完成時,每個來源的版本化成品都會下載到管線代理程式,讓該階段內的工作可以存取它們。 當發行完成時,不會刪除這些下載的成品。 不過,起始新版本時,會刪除先前的成品,並以新的成品取代。
起始發行時,會在每個發行管線的代理程式上建立唯一資料夾,而且成品會下載至此資料夾:$(System.DefaultWorkingDirectory)
如果再次部署相同的版本,Azure Pipelines 不會執行任何優化,以避免重新下載未變更的成品。 此外,由於啟動新版本時會刪除先前下載的內容,因此 Azure Pipelines 無法對代理程式執行累加式下載。
若要略過自動成品下載,請流覽至您的發行管線>>工作代理程序作業>成品下載,然後取消核取所有成品,或指定要略過的特定成品。
若要略過自動成品下載,請流覽至您的發行管線>>工作代理程序作業>[其他選項],然後核取 [略過成品下載] 複選框。