很榮幸在去年加入到 SmartIDE 產品組,從事開發工作,期間產品經歷了無數個迭代,這是一段非常難忘的經歷......
專案之初一位大牛提出了一個哲學問題 —— 先有雞還是有蛋(SmartIDE 如何開發 SmartIDE),藉著這話題,本文將以 Golang 專案 SmartIDE CLI 為例進行演示。
概述
OpenAI 的解釋是:SmartIDE 是一款軟體開發環境的工具,它使用容器技術來解決軟體執行環境的一致性、標準化、快速獲取、可擴充套件性和可維護性問題。它將 IDE 的邊界重新定義為包括程式碼編輯器、執行時、SDK、中介軟體、應用伺服器、配置和底層作業系統等內容。
一些適用的場景:
- 開發環境腐化
- 作為一個工程獅(工程師),底子裡就是喜歡各種嘗試新事物(新工具、新框架...),有時候玩翻車了,然後告訴領導 / 老闆今天我要閉關修煉(重灌系統)
- 程式設計師就是多核的電腦,專案之間來回切換,新舊不同的專案,甚至不同的技術棧,開發除錯環境不能隔離,折騰不說,很容易帶著問題就上了生產
- 自己的電腦開了一堆的軟體,好像這個不能關,那個也得留著,此時再來除錯或者壓測,電腦直接嗝屁了
- 程式設計師到處救火,一個開發環境搞半天,增加了對客戶或者使用者的響應時間,市場壓力山大
- 專案組進了小鮮肉,一個環境要幫忙裝半天
- 教學用途
- 演示一下,不做更深入的開發
問題:
SmartIDE 的本質還是 WebIDE,所以缺點也是很明顯。
- 體驗上沒有桌面IDE流暢,貌似又回來了原來C/S架構的看不中B/S架構,但是大勢所趨現在的B/S架構的市場佔有率是碾壓式的。
- 伺服器資源的限制,給每個使用者、每個專案單獨劃分一定的資源
- 受限於網路傳輸的速度,這個不太好解決,就算是內網也一樣可能出問題
總結:
SmartIDE 對於市場來說還是比較新,還需要時間才能夠推廣開來,易用性 和 流暢度總會找到一個平衡。
架構
簡單來說,按照使用者的需求,比如技術棧、IDE型別,本地或者Server 透過 CLI工具排程 docker、k8s ,按照編排好的映象建立獨立的開發環境給到使用者使用。
開發檢視
從開發的角度,有三個重要的組成部分,CLI、Server、Image
- CLI, 透過 Cobra 框架實現對shell命令的支援,比如 command、args、flag 這些元素,在業務上主要是支援在 本地、遠端主機、k8s 三類資源上建立獨立開發環境
- Server,是一個執行在伺服器上的排程平臺,基於 Gin Vue Amin 這個框架的外掛式開發,即不動核心程式碼在單獨的資料夾中開發業務即可
- Image,為各種語言編排了獨立的映象,並根據共性編排了base映象
快速開始
安裝 SmartIDE CLI
參考:https://smartide.dev/zh/docs/install/cli/
建議安裝每日構建版,以mac為例
# Intel晶片
curl -OL "https://smartidedl.blob.core.chinacloudapi.cn/builds/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/builds/stable.txt)/smartide-osx" \
&& mv -f smartide-osx /usr/local/bin/smartide \
&& ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& chmod +x /usr/local/bin/smartide
環境
## 國內安裝包下載
wget https://smartidedl.blob.core.chinacloudapi.cn/hybrid/sysbox/sysbox-ce_0.5.2-0.linux_amd64.deb
## 國際安裝包下載
wget https://downloads.nestybox.com/sysbox/releases/v0.5.2/sysbox-ce_0.5.2-0.linux_amd64.deb
## 刪除現有的所有容器
docker rm $(docker ps -a -q) -f
## 安裝
sudo apt-get install ./sysbox-ce_0.5.2-0.linux_amd64.deb
## 檢視執行狀態,注意 active (running) 文字
sudo systemctl status sysbox -n20
啟動
建立環境
透過CLI建立
## 新增 host
smartide host add {vm-host-ip} --password {vm-password} --username {vm-username}
## 在 vm 上新建工作區
smartide start --host {host-id} --repourl https://github.com/SmartIDE/SmartIDE.git
啟動完成後,會自動在預設瀏覽器中開啟webide,在terminal中會自動執行一些shell command,讓它們執行完即可
透過 Server 建立
公網測試地址: https://dev.smartide.cn/
建立成功後,可以點選icon開啟WebIDE
安裝工具
手動安裝go外掛
工具安裝
全選,等待安裝結束
除錯
進入到CLI目錄下,比如 http://localhost:6900/?folder=vscode-remote://localhost:6900/home/project/cli
建立 lauch.json 檔案
基本除錯
以version命令為例
{
"name": "Version",
"type": "go",
"request": "launch",
"console": "integratedTerminal",
"mode": "debug",
"apiVersion": 2,
"program": "${workspaceFolder}",
"showLog": true,
"trace": "verbose",
"args": [
"version"
]
},
Start 命令除錯
## 建立目錄
mkdir -p /home/smartide/test
## 新增配置到launch.json
{
"name": "Start",
"type": "go",
"request": "launch",
"apiVersion": 2,
"program": "${workspaceFolder}",
"cwd": "/home/smartide/test",
"console": "integratedTerminal",
"mode": "debug",
"args": [
"start",
"--repourl", "https://github.com/idcf-boat-house/boathouse-calculator.git",
"-d"
]
},
進入斷點