開源一套快速部署程式的工具(CI/CD)

2023-11-16 18:01:25

隨著微服務越寫越多,程式釋出就成了一個麻煩事,所以寫了一個部署工具 Vela,只要填寫一個git地址、編譯命令等簡單資訊,就能自動完成程式的部署。

Vela 特性:


  • 程式碼可在任意一臺電腦自動完成編譯,再自動上傳至伺服器

  • 可指定程式以Docker容器方式執行

  • 編譯命令採用終端執行,理論支援所有命令列命令

  • 可線上編輯程式組態檔,編輯時可選擇其他程式的組態檔作為參考

  • 程式更新時會自動備份現有版本,日後可通過備份列表恢復

  • 實時以列表形式展示所有程式的CPU、記憶體佔用情況,並可設定報警線

Vela 構成


Vela 分為兩部份:

  • Vela Web

執行在任意一臺電腦上,它負責從git地址克隆程式碼,並執行編譯命令;
對外提供 web 管理頁面,作為 Vela 的管理入口。

  • Vela Agent

執行在目標伺服器上,負責接收 Vela Web 傳送過來的程式檔案,並打包為 Docker 映像,然後執行該映像。

Vela 下載地址


https://cccscls-my.sharepoint.com/:f:/g/personal/jack_mutc_ca/Et7VbP7sX31EiN-NQkPL0RgBL5RBG15_PyepR5Tx0PaqsQ?e=BTngox

Vela Agent 安裝


在目標伺服器(Linux)上,下載 VelaAgent.***.zip ,解壓後,在目錄下執行下面命令安裝vela-agent服務:

sudo chmod +x VelaService
sudo ./VelaService

會詢問你用什麼使用者來執行日後部署的程式,你可以輸入特點的使用者名稱,或者直接回車,用root使用者執行。

服務安裝完畢後,執行 systemctl start vela-agent 啟動服務。

如果你以後釋出的程式需要以Docker容器的方式執行,那麼,在此伺服器上,還需要安裝Docker。

Vela Web 安裝


如果你用windows跑vela web,直接執行 VelaWeb.Server.exe 即可,不用參考下面Linux安裝步驟。

在編譯伺服器(Linux)上,下載 VelaWeb.***.zip ,解壓後,在目錄下執行下面命令安裝vela-web服務:

sudo chmod +x VelaService
sudo ./VelaService

會詢問你用什麼使用者來執行該服務,你可以輸入特點的使用者名稱,或者直接回車,用root使用者執行。

服務安裝完畢後,執行 systemctl start vela-web 啟動服務。

由於我平時都是部署.net專案和vue前端專案,所以,編譯伺服器我還會安裝.net sdk、nodejs等環境

瀏覽器存取管理頁面


vela-web是一個web服務,通過 http://ip:10001 可以存取它的管理頁面,如果要修改它的埠,編輯 /opt/software/vela-web-application/appsettings.json 檔案,然後重啟服務即可:systemctl restart vela-web

預設管理員使用者:admin 密碼: admin

新增目標伺服器


在「伺服器列表」頁面,點選新增伺服器,把你的vela-agent伺服器,新增到列表當中。

為了安全考慮,一個 vela-agent 伺服器,只能被一個 vela-web 繫結,當 vela-agent 被新增到列表後,其他 vela-web 無法和它再繫結。

如果要解除這種繫結關係,需要手動刪除 vela-agent 伺服器上的 /opt/software/vela-agent-application/data.ClientCertHash檔案,並重啟服務:systemctl restart vela-agent

新增程式


在「程式部署列表」頁面,點選【新部署程式】按鈕,新增你要部署的程式。
例如,我現在要把一個開源的微服務閘道器,部署到我的伺服器上,可以如下設定:




上面有幾個空格需要著重說明一下:

  • 命令執行目錄

你的專案程式碼可能不是在git地址的根目錄下,假如你的程式碼在 MyProject/ 目錄下,那麼,【命令執行目錄】應該填寫 MyProject

  • 命令指令碼

這裡是填寫編譯專案的語句,例如,.net專案,就可以填寫:

dotnet publish --force -c release -o bin/publish --self-contained true --runtime linux-x64

注意,這個命令是在【命令執行目錄】下執行的,假如【命令執行目錄】= MyProject,那麼,最終編譯的檔案會輸出到 MyProject/bin/publish 目錄下

  • 釋出檔案所在目錄

這裡是告訴伺服器,編譯後的檔案放在什麼地方了。
注意,這個目錄是相對於【命令執行目錄】而言的,所以,按照上面的編譯命令 ,【釋出檔案所在目錄】應該填寫 bin/publish

編譯並行布


在程式列表中,點選表格左邊【...】按鈕,開啟選單,點選【檢視輸出紀錄檔】按鈕

然後會看到開啟一個終端頁面,點選【立刻釋出】按鈕,將會看到程式的編譯過程。

安裝nodejs也可編譯前端專案

如果你是第一次釋出這個程式,編譯完成後,它不會立刻執行,會提示你先修改此程式的組態檔,再手動點選【啟動】來執行此程式。

檢視Docker容器紀錄檔

點選【檢視程式控制臺輸出】,可以檢視這個容器的紀錄檔

利用Vela部署一個PostgreSql

大家知道,可以通過 docker 映像直接部署一個PostgreSql資料庫,但是,為了在Vela中可以統一檢視資料庫的壓力狀態,通過vela來部署會更方便一些。

如下圖所示,新增部署程式,不要填寫git地址,只需要設定一些docker相關的資訊即可。

原始碼地址


https://github.com/simpleway2016/vela.git

有問題可到qq群交流:1030042218