或許你接觸過Jenkins, 在我理解就是拉取源碼,然後構建成鏡像,最後啟動容器! 但是這個功能對於小記憶體的伺服器來說就是奢望了! 今天介紹一個新版本,把你這個遺憾彌補下! 在PasteSpider中,也是支持拉取源碼,然後編譯發佈的!!! 以下案例使用svn作為源碼管理 如果你使用git作為源碼管 ...
或許你接觸過Jenkins,
在我理解就是拉取源碼,然後構建成鏡像,最後啟動容器!
但是這個功能對於小記憶體的伺服器來說就是奢望了!
今天介紹一個新版本,把你這個遺憾彌補下!
在PasteSpider中,也是支持拉取源碼,然後編譯發佈的!!!
以下案例使用svn作為源碼管理
如果你使用git作為源碼管理,道理差不多
以我的代碼為例
dotnet 6.0 + Linux AliBaba + PasteSpider v24.07.20.01
1.按照論壇的方式安裝PasteSpider
2.在伺服器linux上安裝dotnet
這個可以查看微軟官方網站
https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-scripted-manual#scripted-install
安裝完成後執行命令監測下
dotnet --info
SVN/GIT的配置
3.打開PasteSpider的管理端,找到菜單
以我的為例,我為項目
如果你啟用了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.準備測試
以上信息保存後,我們來提交一下代碼!
註意看我的備註是update打頭的,這個和我的步驟3的相對應!
我的啟動前的資源使用情況
提交後,到PasteSpider的管理端的任務列表查看
在接收到對應的post-commit的推送後,會先執行鏡像的構建,然後會基於配置執行升級!
或者是等待通知,比如我的
當然,如果執行失敗了,則需要到任務的詳細中查看,具體哪個命令失敗了,比如我以前的
打開後,查看這個任務裡面的子任務,哪條執行失敗!
點擊詳細,會看到具體執行的命令,你可以把這個命令自己複製到伺服器上去執行,看看為啥錯誤!
基於任務詳細的反饋,如果有錯誤的修正後重新提交嘗試!
升級後
多的部分,就是克隆命令後的編譯發佈花費的,使用ps -aux 可以查看到對應多出來的
查過資料,一段時間後這個會自己退出!
所以資源占用是非常划算的!
多測試幾次,發現時間還是有差的!
寫在後面
其實克隆代碼執行完成後,走的就是預設的服務的發佈模式(就是開發者在開發機上發佈項目到文件,然後把發佈後的項目文件同步到伺服器上,然後伺服器基於發佈的文件執行鏡像的構建和對應服務的發佈!)
也就是說克隆代碼執行完成後,其他的步驟執行的邏輯就和發佈模式一致了
比如會運行幾個容器
埠配置
IP配置
nginx配置等