針對前面兩篇博客的續寫,主體的都寫的差不多了,但是實際真正的功能並沒有寫。功能按鈕如下:分支顯示,打包,重啓。
實時刷新到web的整體思路:
當點擊分支顯示時,做的操作是,把服務名發送到後端,然後調用shell執行git相關命令的操作,將所有分支實時顯示到web界面上,然後通過點擊觸發事件將分支名加到vuex中對應的服務名後面的branch字段中,此時public公共組件裏面的watch會實時監聽vuex中的值將分支名稱顯示到如下,當點擊打包按鈕時,會將這個分支名和服務名一併發送到後端,執行相關的shell腳本,執行完相關的shell腳本後將jar包發送到指定的位置,當然在執行這個shell過程中會實時的將打包日子顯示到web界面上,對於重啓按鈕顯示日誌也是一樣的,但是這裏想用其他方法實現。接下來會講到。
用到的技術:
第一版:websocket+paramiko
參考博客:https://www.cnblogs.com/xiao987334176/p/10289262.html
思路:通過paramiko模塊實現python和shell的交互,並將執行的結果保存到標準輸出中,然後通過和websocket循環的方式顯示到web界面中。
第二版:websocket+websocketd
websocketd的官網:http://websocketd.com/
webcocketd的簡單使用:
websocketd允許用幾乎任何編程語言編寫WebSocket端點。
端點的連接與關係:
每當瀏覽器連接到該URL時,websocketd服務器將啓動進程的新實例。當瀏覽器斷開連接時,進程將停止。
如果有10個瀏覽器連接到您的服務器,那麼將有10個獨立的程序實例運行。websocketd負責監聽WebSocket連接並啓動/停止程序進程。
是HTML5開始提供的一種瀏覽器與服務器進行全雙工通訊的網絡技術,屬於應用層協議。它基於TCP傳輸協議,並複用HTTP的握手通道。有瀏覽器發起建立連接之後,服務端也可以主動向瀏覽器發送數據。
這是我自己測試的結果:
官網還有websocket+websocketd的測試,到時候將websocket的代碼部分寫入到vue中的script中就可以了。
websocketd官網上有測試,拷貝下來也可以自己測試,完全沒有問題的。這裏沒有繼續在代碼裏面實現的原因是被打擊的太嚴重了,做完之後發現和jenkins持續構架並沒有什麼區別,jenkins的流程也是在本地打包,打好包之後使用ssh方式將jenkins服務器上的包發送到遠程主機並執行重啓相關的腳本。