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) 團隊聯繫我們,希望我們試用一些新功能。 此公告標誌著我們轉向更精簡的持續整合解決方案。 我們的建置現在跨所有平台同時執行,請查看
為了實現此轉移,需要發生許多很酷的事情。 讓我們分解一下
- Azure Pipelines 對公用專案的支援 使我們能夠執行 公用 Visual Studio Code 專案,其中執行我們所有的持續整合建置;
- Azure Pipelines 中的 建置代理程式 長期以來一直支援 Windows、macOS 和 Linux 平台矩陣;
- Azure Pipelines 中 Microsoft 託管的代理程式 執行 macOS、Linux 和 Windows,提供了一個很棒的軟體堆疊來建置專案,而無需擔心建置機器的維護;
- YAML CI 允許建立 YAML 定義,這些定義與專案的來源保持接近 (Visual Studio Code 為此提供了 很棒的擴充功能)。
將所有這些結合在一起,我們終於能夠專注於單一 CI 解決方案。 Azure Pipelines 上的 Visual Studio Code 建置 在單一建置中執行我們的編譯、衛生檢查和測試套件,自動將建置分散到不同的平台。 由於我們使用 Microsoft 託管的建置代理程式,因此我們不必擔心維護這些機器。
協力廠商整合
Azure Pipelines 也提供 GitHub 整合,這為我們在 GitHub 專案頁面 (特別是在提取要求中) 提供建置結果指示器。
我們也建置了一個聊天機器人,它連接到 Azure Pipeline 的 REST API,並在建置中斷時向我們的內部聊天提供通知。
展望未來
我的下一個任務將是利用 程式碼涵蓋率報告,以便獲得比先前工具組合更好的端對端 CI 流程。
轉移到 Azure Pipelines 已證明對我們來說是一大成功。 由於建置不再分散各處,因此現在更容易推斷整體程式碼品質。 我們也整合了 建置定義檔案 的數量和格式。 我們對此變更感到非常滿意,並對 Azure Pipelines 的未來感到興奮。
如果您想了解有關公用專案和 Azure Pipelines 的更多資訊,請查看他們的部落格文章。
您想試用 Visual Studio Code 嗎? 立即下載 適用於您選擇的平台。 如果您和我們一樣,總是想執行最新和最棒的版本,那麼請取得我們每日建置的 Insider 版本。 您只是想聯繫或保持聯繫嗎? 在 Twitter 上關注我們 @code。
謹代表 VS Code 團隊:祝您編碼愉快!
João Moreno,@joaomoreno