云原生集成開發環境——TitanIDE
通過網頁在任何地方更安全、更高效地編碼2023-02-09
761
原文作者:leyu.樂魚創新產品總監 John
概述
今天我們接著上一期的文章《玩轉云原生 Terminal 之 TTY 的前世今生》(閱讀原文),繼續來聊一聊云原生 Terminal。為了在 TitanIDE 上玩轉云原生 Terminal ,首先找到了 WeTTY,在這個過程中,花費了不少時間,雖然生命在于折騰,但折騰 WeTTY 的代價有點過大了。只能說 ,WeTTY,想說愛你不容易……
具體什么情況呢?請繼續往下看。
WeTTY 是什么?
WeTTY = Web + TTY
Terminal over HTTP and https. WeTTY is an alternative to ajaxterm and anyterm but much better than them because WeTTY uses xterm.js which is a full fledged implementation of terminal emulation written entirely in JavaScript. WeTTY uses websockets rather than Ajax and hence better response time.
WeTTY 終端通過 HTTP 和 https 在瀏覽器訪問。WeTTY是 ajaxterm 和 anyterm 的替代品,但比它們好得多,因為WeTTY 采用 xterm.js 來實現的,這是一個完全用 JavaScript 編寫的完整的終端模擬器。WeTTY 使用 websockets 而不是 Ajax,因此響應時間更好。
TitanIDE 是什么?
本文所有涉及的所有操作都是在 TitanIDE 完成的,如果您還未了解過 TitanIDE,請點擊這里了解詳情,簡單來說,TitanIDE 是一款云原生集成開發環境,特點是“安全、高效、體驗”,最少只需一臺虛擬機,十分鐘即可安裝好,即可開啟您的全云端開發之旅!
擼起袖子開干
要在 TitanIDE 運行一個全新的 WeTTY, 首先需要構建一個模板鏡像,然后通過模板鏡像創建模板,再通過模板創建項目。當然以上是一次性操作,以后就可以直接通過創建好的模板創建項目即可。
構建模板鏡像
創建 TemplateMaker 項目
在 TitanIDE 上構建模板鏡像,需要通過 TemplateMaker 模板來創建一個項目 template-wetty。
如果您不知道如何操作,README.md 有中英文詳細說明,跟著操作就行了。
創建好的項目 template-wetty 包含以下文件。
上傳模板圖標
在文件管理工具欄點擊 template-wetty 進入項目文件夾內。
將準備好的圖標文件 icon.png 拖拽到文件上傳區域:
編輯 Dockerfile
在編輯 Dockerfile 之前,我們先準備一下 WeTTY 的啟動腳本,并將保存為 ./bin/app。
構建鏡像
TitanIDE 內置了鏡像構建工具,具體的命令行在 Makefile 里面,執行 make help查看幫助。
Dockerfile 編輯好之后就可以直接在當前項目文件夾下面執行 make命令進行鏡像的構建。
復制鏡像 URL
接下來大概等待一分鐘左右,鏡像就可以構建完成。( 鏡像構建耗時取決于幾個條件,一是網絡,是否需要從外網拉取鏡像和文件;二是安裝了多少軟件。TitanIDE 支持全離線環境鏡像構建,只需要把從外網拉取的鏡像與文件改成本地的即可。)
鏡像構建好了會在 IDE 的終端提示已經推送到鏡像倉庫,您可以選擇并復制鏡像 URL 以備用。(如果你仔細看鏡像的tag 是以 -dirty 結尾的,那是因為修改的工程文件還未提交到 Git 倉庫,提交之后 tag 就沒有 -dirty 結尾,當然,您也可以在構建的 make 命令后面加參數直接指定 tag,具體操作方法請參考 README )
將代碼提交到 Git 之后再次構建。
創建模板
進入模板列表,點擊「創建模板」按鈕。
將之前復制好模板鏡像 URL (例如:titan.hub:5000/demo/template-wetty:v20230129-da35bea)粘貼到模板鏡像輸入框,再指定模板名稱,除了以上項必填之外,其它為選填項,您可以根據需要來填寫,如顯示名稱,模板描述等。
通過簡單的兩步,再點擊「創建」即可創建好 TitanIDE 的模板。
創建項目
在 TitanIDE 創建項目有兩個途徑,第一、在項目列表頁面通過點擊「創建項目」按鈕進入,選擇模板進行創建,第二、在模板頁面選擇模板直接創建并快速打開項目。這里我們選用第二種方法一鍵創建 WeTTY 項目。
創建好 WeTTY 項目打開后直接進入 bash 終端,接下來就可以使用了。
根據我們在上一篇文章《在 TitanIDE 玩轉云原生 Terminal 系列(一):TTY 的前世今生》所了解到的,我們在 WeTTY 終端來驗證一下 tty stty -a幾個命令。
問題
以上看起來似乎一切都是那么順風順水,不香嗎?怎么標題看起來有點危言聳聽?您且慢,聽我解釋一下:
WeTTY 官方鏡像默認使用 alpine 基礎鏡像,而 WeTTY 也主打遠程 SSH 連接,對于 TitanIDE 這種開發環境來說,不是很友好,alpine 作為服務運行很好,但是作為開發環境就力不從心了。
那好,我能不能自己從源碼開始構建一個 WeTTY,然后使用 ubuntu 作為基礎鏡像呢?我還真這么干了,結果就更悲劇了,從源碼構建也是成功了的,也可以運行起來,不過,我自己從源構建出來的死活對 --command 參數不感冒,如果要去解決這個問題,目前作為一個用戶,所花費的時間成本不低了,因此只好暫且作罷。
我已經將這個問題提到開發者的 GitHub issue,后續再跟進。(查看GitHub issue)
上圖是我在 TitanIDE 創建了一個 VS Code 項目,克隆了 WeTTY 源碼并運行起來了,指定了 --command 卻不起作用,下面是完整的啟動命令。
1、克隆代碼
git clone https://github.com/butlerx/wetty.git
2、編譯代碼并運行調試
作為一個開發者,我以前可能會直接想辦法解決上面這個問題,但是現在我多了一層思考,我們遇到問題的時候,應該先跳出來,找找有沒有其他選擇,在更多的選擇中找一個最優解,而不是一頭扎進去。以上問題就讓更專業的開發者去解決。
總結
總體來說 WeTTY 是一個不錯的 Web 終端,簡單的幾步就構建了一個 TitanIDE 模板鏡像,并用它新建項目,直接打開使用。從使用的角度來看,功能和性能都很不錯,也可以在頁面直接定制字體,主題顏色,操作系統適配等等。如果作為一般用途,比如代替 xshell 等工具做運維相關工作還是很有競爭力的。但是希望用 WeTTY 來作為日常開發用,我相信也是可以的,不過這就需要花更多的時間去折騰了。
本文是系列文章《在 TitanIDE 玩轉云原生 Terminal 系列》,我將會在下一篇繼續就這個話題展開探索,敬請期待!
最后,感謝閱讀!