10秒!GitHub工程團隊轉移到Codespaces,開發環境「即開即用」

新智元 2021-08-16 01:31:02 阅读数:212

本文一共[544]字,预计阅读时长:1分钟~
github 工程 移到 codespaces 即用

新智元報道

來源:GitHub

編輯:小勻 Priscilla

【新智元導讀】近日,GitHub宣布轉移到去年5月就推出的Codespaces,現在,基於瀏覽器的編碼環境Codespaces配置了32核、64GB RAM的VM,提前克隆和引導存儲庫,只需要10秒時間就能够和團隊共享開發環境。

Github宣布:轉移到 Codespaces。

GitHub通過博客告知開發者們,他們將其擴展到GitHub團隊和企業(雲)計劃,開始更廣泛地推出其基於瀏覽器的編碼環境Codespaces。

這家微軟旗下的公司還宣布,內部已經從MacOS模式過渡到Codespaces,後者現在是GitHub的默認開發環境。

GitHub於去年5月首次推出Codespaces,作為具有所有常用GitHub功能的雲托管開發環境。

它基本上由微軟的Visual Studio Code提供支持,該代碼自2019年起作為基於Web的編輯器提供,並於去年更名為Visual Studio Codespaces。

9 月,微軟還確認將Visual Studio Codespaces整合到GitHub Codespaces 中。

GitHub的Codespaces最初是在面向個人用戶的「有限公開測試版」中推出的,而現在團隊或企業(不包括自托管)計劃中的所有企業都可以在其 GitHub設置中主動啟用Codespaces,並且他們現在可以在所有私有存儲庫中使用Codespaces。

通過將編碼環境帶到雲端,開發人員可以更輕松地加入和協作項目,並以最少的配置開始編碼。

在這14年中,支持GitHub.com (github/github) 的核心存儲庫已經收到了超過一百萬次提交。這些提交中的絕大多數來自在 macOS 上構建和測試的開發人員。

不行就換!

將GitHub遷移到Codespaces能够解决開發者環境不同的問題。

想法有多理想,實現起來就有多困難。

GitHub.com存儲庫在磁盤上幾乎占了13GB。

只是簡單地克隆一下存儲庫,啪,20分鐘就過去了。

結合依賴設置,bootstrap一下GitHub.com的代碼空間,45分鐘過去了。

一旦將存儲庫成功掛載到代碼空間中,應用程序還不運行了。

14年來,以macOS為中心的設想付之東流。

但堅强的工程團隊又怎麼會輕言放弃!

他們開始質疑一直以來的設想,並在源代碼級別工作以將GitHub開發與macOS分離。

最後,雖然速度很慢,但至少可以在Linux主機上提供可用的GitHub.com代碼空間,從Visual Studio Code連接,交付一些工作。

下面來看看團隊是如何實現「閃電般速度」的雲端開發環境。

從45min到5min

使用Codespaces的目標是希望能够為手頭的任務按需提供開發環境,分支和代碼空間之間的映射大致為1:1。

為了支持基於任務的工作流,團隊希望能够做到「即開即用」。

團隊不滿足於45分鐘,但是這個時間長度還是能讓人看到希望。

首先是要改變Codespaces克隆github/github的方式。

與之前在配置時執行完整克隆不同,現在Codespaces執行的是淺層克隆。

然後在使用最新提交創建代碼空間後,在後臺執行非淺層存儲庫曆史記錄。

這樣克隆時間就能從20分鐘縮短到90秒!

下一個要改進的,是緩存支持GitHub.com的軟件和服務網絡。

包括傳統的基於Gemfile的依賴項以及用C、Go和自定義構建的Ruby編寫的服務。

團隊提出了一個解决方案,那就是讓GitHub Action每天晚上夜深人靜的時候悄悄運行。

當然是為了克隆存儲庫,引導依賴項,還有構建和推送結果的Docker image。

發布的image隨後被用作github/github的devcontainer-config-as-code中的基礎鏡像,構成Codespaces環境。

在瀏覽器中通過即時重新加載來預覽更改,還能與隊友共享私有和公共端口。

就憑這兩項更改(以及少量應用程序和服務級別優化),就能將GitHub.com代碼空間的創建時間從45分鐘縮短到5分鐘。

不過這届GitHub工程團隊真的很嚴格。

他們覺得五分鐘,距離「即開即用」的目標還有相當大的距離。

從5min到10s

快速啟動到代碼空間,淺層克隆方法還是很有用的,不過有時還是需要完整克隆。

所以團隊就想,為什麼不能提前克隆和引導存儲庫呢?

光想不做是大忌。

進入預構建:代碼空間池,完全克隆和引導,等待開發人員聯系。

最終,現在能够創建可靠的預配置代碼空間。

而且在10秒內就能准備完畢。

跟以前哼哧哼哧安裝Slack相比,現在新員工可以在更短的時間內,從零開始進入正常運行的開發環境。

要是開發環境崩潰了,比如太落後,或者測試數據產生了破壞,工程師也能够快速創建一個新環境。

標准化的開發環境

另外,切換到Codespaces還能解决掉一些非常現實的問題。

它消除了本地開發環境的脆弱性和單軌模型,但同時也改善了GitHub開發人員的體驗。

剛開始切換到Codespaces時,用的是8核、16GB RAM的VM。

本來有這些配置已經足够了,但GitHub運行的網絡由不同服務組成,消耗很大。

所以後來更換成了32核、64GB RAM的VM,給每比特工程師的配置都昇了級。

參考資料:

https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/

https://github.com/features/codespaces

版权声明:本文为[新智元]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210816013014901n.html