使用 SmartIDE 開發golang項目

很榮幸在去年加入到 SmartIDE 產品組,從事開發工作,期間產品經歷了無數個迭代,這是一段非常難忘的經歷......

項目之初一位大牛提出了一個哲學問題 —— 先有雞還是有蛋(SmartIDE 如何開發 SmartIDE),藉着這話題,本文將以 Golang 項目 SmartIDE CLI 爲例進行演示。

概述

官網概述:https://smartide.cn/zh/docs/overview/

OpenAI 的解釋是:SmartIDE 是一款軟件開發環境的工具,它使用容器技術來解決軟件運行環境的一致性、標準化、快速獲取、可擴展性和可維護性問題。它將 IDE 的邊界重新定義爲包括代碼編輯器、運行時、SDK、中間件、應用服務器、配置和底層操作系統等內容。

一些適用的場景:

  1. 開發環境腐化
  • 作爲一個工程獅(工程師),底子裏就是喜歡各種嘗試新事物(新工具、新框架...),有時候玩翻車了,然後告訴領導 / 老闆今天我要閉關修煉(重裝系統)
  • 程序員就是多核的電腦,項目之間來回切換,新舊不同的項目,甚至不同的技術棧,開發調試環境不能隔離,折騰不說,很容易帶着問題就上了生產
  • 自己的電腦開了一堆的軟件,好像這個不能關,那個也得留着,此時再來調試或者壓測,電腦直接嗝屁了
  • 程序員到處救火,一個開發環境搞半天,增加了對客戶或者用戶的響應時間,市場壓力山大
  • 項目組進了小鮮肉,一個環境要幫忙裝半天
  1. 教學用途
  • 演示一下,不做更深入的開發

問題:
SmartIDE 的本質還是 WebIDE,所以缺點也是很明顯。

  • 體驗上沒有桌面IDE流暢,貌似又回來了原來C/S架構的看不中B/S架構,但是大勢所趨現在的B/S架構的市場佔有率是碾壓式的。
  • 服務器資源的限制,給每個用戶、每個項目單獨劃分一定的資源
  • 受限於網絡傳輸的速度,這個不太好解決,就算是內網也一樣可能出問題

總結:
SmartIDE 對於市場來說還是比較新,還需要時間才能夠推廣開來,易用性 和 流暢度總會找到一個平衡。

架構

簡單來說,按照用戶的需求,比如技術棧、IDE類型,本地或者Server 通過 CLI工具調度 docker、k8s ,按照編排好的鏡像創建獨立的開發環境給到用戶使用。

畫圖工具:https://app.diagrams.net/

開發視圖

從開發的角度,有三個重要的組成部分,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

環境

參考 https://smartide.dev/zh/docs/install/docker/linux/

## 國內安裝包下載
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"
            ]
        },

進入斷點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章