使用PasteSpider實現類似Jenkins的功能,讓你的2G伺服器也可以飛起

PasteSpider發表於2024-08-04

或許你接觸過Jenkins,

在我理解就是拉取原始碼,然後構建成映象,最後啟動容器!

但是這個功能對於小記憶體的伺服器來說就是奢望了!

今天介紹一個新版本,把你這個遺憾彌補下!

在PasteSpider中,也是支援拉取原始碼,然後編譯釋出的!!!

以下案例使用svn作為原始碼管理

如果你使用git作為原始碼管理,道理差不多

以我的程式碼為例

dotnet 6.0 + Linux AliBaba + PasteSpider v24.07.20.01

1.按照論壇的方式安裝PasteSpider

一鍵安裝PasteSpider

2.在伺服器linux上安裝dotnet

這個可以檢視微軟官方網站

https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-scripted-manual#scripted-install

安裝完成後執行命令監測下

dotnet --info

SVN/GIT的配置

3.開啟PasteSpider的管理端,找到選單

image.png
以我的為例,我為專案

image.png

如果你啟用了docker registry的私人倉庫,則上面的配置中倉儲那邊要對應的選擇,選擇哪個要看你所選的服務

上面中要注意的是 克隆編譯命令

我的如下

#刪除舊的原始碼
rm -rf /spider/source/blog/tool/
#建立資料夾,可能資料夾不存在
mkdir -p /spider/settings/blog/tool/
#刪除舊的配置檔案,這一步看實際情況,因為拉取原始碼會把所有程式碼都覆蓋
rm -rf /spider/settings/blog/tool/appsettings.json
#複製配置檔案,留著備用
cp -f /spider/publish/blog/tool/appsettings.json /spider/settings/blog/tool/appsettings.json
#從服務端拉取原始碼,這個第一次的時候一般會失敗,所以要直接去服務端試著拉取程式碼
svn checkout svn://your_svn_ip:your_svn_port/PasteSoft/PasteSoft --username=your_svn_name --password=your_svn_password /spider/source/blog/tool/
#構建命令,不同語言不一樣處理,目的就是釋出到資料夾
dotnet publish /spider/source/blog/tool/ -c release -r linux-x64 --self-contained false -o /spider/publish/blog/tool/
#刪除拉取的配置檔案
rm -rf /spider/publish/blog/tool/appsettings.json
#從剛剛備份的配置檔案複製到釋出資料夾
cp -f /spider/settings/blog/tool/appsettings.json /spider/publish/blog/tool/appsettings.json
#後續的動作由系統接管,其實就是構建映象和升級!

以上需要注意的地方有

目錄說明

/spider/這個是工作目錄,就是PasteSpider的工作目錄,對於宿主伺服器的路徑而言的,預設是/spider/

這個目錄下有幾個功能資料夾

source 表示用於存放svn拉取的原始碼的

publish 表示用於存放服務編譯後(釋出)的檔案的

settings 用於存放專案服務的特別檔案的,這個看需求

克隆編譯命令 的目的就是拉取原始碼到source資料夾,然後透過對應語言的釋出命令,釋出到publish資料夾

功能資料夾下還有幾層

/spider/source/blog/tool/為例

spider是PasteSpider的工作目錄

source是功能資料夾 表示原始碼

blog表示這個專案的程式碼

tool表示這個服務的程式碼

命令說明

命令一行一條,每行之間沒有上下關係,也就是沒有相對路徑的說法,你得寫全路徑

如果是#開頭的,則這一行命令不會被執行,是註釋

更新說明

在配置的下方有一個表示,其實是多少個環境就多少行,然後注意後面那個命令開頭

意思是原始碼提交的備註是這個字母開頭的,才會觸發升級,比如我的配置是

update 的開頭 就可以觸發

驗證金鑰注意下,下面的步驟4要使用

4 post-commit

假設你一鍵有一個SVN程式碼管理器的服務端,則參考如下文章進行配置並設定post-commit的hook檔案

https://soft.pastecode.cn/Article/1

精華部分其實就在

post-commit的內容上

#REPOS="$1"
#REV="$2"
export LANG=zh_CN
MESSAGE=$(svnlook log -r $2 $1)
curl -d "token=your_token&repos=$1&version=$2&info=$3&info=$MESSAGE" "https://spider.abc.com/api/spider/Code/svncommit"

假設訪問https://spider.abc.com/page/index.html可以訪問到我的PasteSpider管理端,則有如上配置

注意上面的your_token,和我們3步驟配置的驗證金鑰需要一致,一會有個地方要用

上面的檔案儲存好了後,注意修改post-commit的執行許可權,需要能夠執行,否則是不會生效的

5檢查流程

以上按照要求配置後,特別注意的是命令相關的內容

伺服器是否支援相關的命令

是否支援curl 這個用於推送資訊到PasteSpider的介面上的

是否支援dotnet 這個要看你是啥語言,不同語言的編譯釋出命令是不一樣的

是否支援svn 這個是拉取原始碼的,比如我這個伺服器上找不到這個命令,就使用yum -y install svn 不同伺服器要基於自己的去安裝

一些登陸操作是否已經執行

比如svn這個拉取程式碼的操作,一般是要求第一次執行,會有一個提示,大致意思是登陸,授權啥的,你可以手動執行下

6.準備測試

以上資訊儲存後,我們來提交一下程式碼!

image.png

注意看我的備註是update打頭的,這個和我的步驟3的相對應!

我的啟動前的資源使用情況

image.png

提交後,到PasteSpider的管理端的任務列表檢視

image.png

在接收到對應的post-commit的推送後,會先執行映象的構建,然後會基於配置執行升級!

或者是等待通知,比如我的

image.png

當然,如果執行失敗了,則需要到任務的詳細中檢視,具體哪個命令失敗了,比如我以前的

image.png

開啟後,檢視這個任務裡面的子任務,哪條執行失敗!

image.png

點選詳細,會看到具體執行的命令,你可以把這個命令自己複製到伺服器上去執行,看看為啥錯誤!

基於任務詳細的反饋,如果有錯誤的修正後重新提交嘗試!

升級後

image.png
多的部分,就是克隆命令後的編譯釋出花費的,使用ps -aux 可以檢視到對應多出來的

image.png

查過資料,一段時間後這個會自己退出!

所以資源佔用是非常划算的!

多測試幾次,發現時間還是有差的!

image.png

寫在後面

其實克隆程式碼執行完成後,走的就是預設的服務的釋出模式(就是開發者在開發機上釋出專案到檔案,然後把釋出後的專案檔案同步到伺服器上,然後伺服器基於釋出的檔案執行映象的構建和對應服務的釋出!)

也就是說克隆程式碼執行完成後,其他的步驟執行的邏輯就和釋出模式一致了

比如會執行幾個容器

埠配置

IP配置

nginx配置等

相關文章