🚀 在 VS Code 中取得

Visual Studio Code 使用 Azure Pipelines

2018 年 9 月 12 日 João Moreno,@joaomoreno

身為 Visual Studio Code 團隊的開發人員,我的職責之一是維護和改善我們的建置和持續整合 (CI) 基礎架構。 鑑於Azure Pipelines最新的功能公告,Visual Studio Code 團隊大幅改變了我們運用 Microsoft 技術的方式,為我們的開發人員和使用者提供更優質的協作平台。 在這篇部落格文章中,我將引導您了解 Visual Studio Code 的一些歷史,重點介紹我們的 CI 流程和工具,以及它們如何隨時間演變。

Visual Studio Code 工程團隊

如同任何其他開放原始碼專案,我們需要適當的工具和功能來接收、分類和處理盡可能多的程式碼貢獻。 這在開發人員工具領域尤其如此,因為使用者本身也是開發人員:他們是一群充滿熱情、努力工作且非常有效率的群體。 截至這篇部落格文章發布時,我們有 148 個開啟的 PR 以及 3,482 個已關閉的 PR,這表示自專案開始以來的 3 年生命週期中,平均每天約有 3 個 PR。 我們必須充分準備好處理如此大規模的貢獻,不僅要保持專案開發的健全,還要為其他開放原始碼專案提供如何在這種規模下運作的範例。 我們實現此目標的部分方式是透過將 PR 體驗帶入編輯器來簡化我們的工作流程,但 CI 是處理大規模貢獻的另一個重要部分。

直到最近,我們都仰賴 OSS 社群針對公用持續整合的預設選擇:Travis CI 用於我們的 Linux 和 macOS 建置,而 AppVeyor 用於 Windows。 此外,我們使用 Coveralls 來提供詳細的測試涵蓋率報告。 這些服務為我們的公用儲存庫上的 PR 和程式碼分支提供品質報告,因為它們自動執行編譯、執行程式碼衛生檢查執行多個測試套件,所有這些對於在擁有大量外部貢獻的分散式團隊中維持品質至關重要。 這些服務組合需要理解和維護至少 3 個不同的系統,每個系統都有其自己的特殊檔案格式、語法、特性、限制等等。

採用 Azure Pipelines

今年稍早,Azure Pipelines (當時稱為 Visual Studio Team Services) 團隊與我們聯繫,希望我們試用一些新功能。 此公告標誌著我們轉向更精簡的持續整合解決方案。 我們的建置現在跨所有平台同時執行,請查看

VSCode Project Build Page

為了讓我們能夠進行此項轉移,需要發生許多很棒的事情。 讓我們來分解一下

  1. Azure Pipelines 對公用專案的支援使我們能夠執行 公用 Visual Studio Code 專案,我們所有的持續整合建置都在其中執行;
  2. Azure Pipelines 中的建置代理程式長期以來一直支援 Windows、macOS 和 Linux 平台矩陣;
  3. Azure Pipelines 中Microsoft 託管的代理程式提供了一套很棒的軟體堆疊來建置專案,而無需擔心建置機器的維護;
  4. YAML CI 允許建立 YAML 定義,這些定義與專案的來源保持接近 (Visual Studio Code 為此提供了出色的擴充功能)。

將所有這些結合在一起,我們終於能夠專注於單一 CI 解決方案。Azure Pipelines 上的 Visual Studio Code 建置在單一建置中執行我們的編譯、衛生檢查和測試套件,自動將建置分散到不同的平台。 由於我們使用 Microsoft 託管的建置代理程式,因此我們不必擔心維護這些機器。

第三方整合

Azure Pipelines 也提供 GitHub 整合,這為我們提供了跨 GitHub 專案頁面的建置結果指示器,特別是在提取要求中。

Pull Request Integration

我們也建立了一個聊天機器人,它連接到 Azure Pipeline 的 REST API,並在建置中斷時向我們的內部聊天提供通知。

Chat Bot Automation

展望未來

我的下一個任務將是利用程式碼涵蓋率報告,以便獲得比我們先前工具組合更好的端對端 CI 流程。

轉移到 Azure Pipelines 已證明對我們來說是一大成功。 整體程式碼品質現在更容易理解,因為建置不會分散在各處。 我們也整合了建置定義檔案的數量和格式。 我們對此變更感到非常滿意,並對 Azure Pipelines 的未來感到興奮。


如果您想了解更多關於公用專案和 Azure Pipelines 的資訊,請查看他們的部落格文章

您想試用 Visual Studio Code 嗎? 立即下載適用於您選擇的平台版本。 如果您和我們一樣,總是想執行最新和最棒的版本,那麼取得我們每日建置的 Insider 版本。 您只是想聯繫或保持聯繫嗎? 在 Twitter 上追蹤我們 @code

謹代表 VS Code 團隊:祝您編碼愉快!

João Moreno,@joaomoreno