很榮幸在去年加入到 SmartIDE 產品組,從事開發工作,期間產品經歷了無數個迭代,這是一段非常難忘的經歷......
專案之初一位大牛提出了一個哲學問題 —— 先有雞還是有蛋(SmartIDE 如何開發 SmartIDE),藉著這話題,本文將以 Golang 專案 SmartIDE CLI 為例進行演示。
OpenAI 的解釋是:SmartIDE 是一款軟體開發環境的工具,它使用容器技術來解決軟體執行環境的一致性、標準化、快速獲取、可延伸性和可維護性問題。它將 IDE 的邊界重新定義為包括程式碼編輯器、執行時、SDK、中介軟體、應用伺服器、設定和底層作業系統等內容。
一些適用的場景:
問題:
SmartIDE 的本質還是 WebIDE,所以缺點也是很明顯。
總結:
SmartIDE 對於市場來說還是比較新,還需要時間才能夠推廣開來,易用性 和 流暢度總會找到一個平衡。
簡單來說,按照使用者的需求,比如技術棧、IDE型別,本地或者Server 通過 CLI工具排程 docker、k8s ,按照編排好的映象建立獨立的開發環境給到使用者使用。
從開發的角度,有三個重要的組成部分,CLI、Server、Image
參考: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"
]
},
## 建立目錄
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"
]
},
進入斷點
歡迎在評論區留下你寶貴的意見,不論好壞都是我前進的動力(cnblogs 排名提升)!
如果喜歡,記得點贊、推薦、關注、收藏、轉發 ... ;)