最近對自己的博客做了些小的修改,部署的時候需要登錄到服務器拉取代碼后進行構建部署等操作,由于有些命令有些長,我不太能記得住,翻找歷史命令時都覺得自己很傻比。一開始想著把命令都記到一個文本里面,下次就直接復制,再細想,不如此徹底一點,做成自動構建和部署,這樣下次把修改代碼提交到GitHub后,直接點擊一個按鈕就輕輕松松部署成功了。
首先是梳理一個自動構建部署流程。在構建服務器上獲取源代碼并進行構建,將構建后的代碼發(fā)送到目標服務器,在目標服務器上執(zhí)行腳本進行部署。過程中使用Jenkins作為自動化工具;構建與部署都在docker容器內進行,盡量做到與服務器環(huán)境無關;使用ssh來執(zhí)行遠程腳本,使用scp將構建后的代碼上傳到目標服務器。具體腳本,請查閱build.sh
具體過程中踩過的一些的坑:
需要將Jenkins用戶加入docker組中,不然Jenkins沒有執(zhí)行docker的權限
開啟ssh互信時,直接復制粘貼公鑰到目標服務器authorized_keys文件中仍然有可能提示未認證,可以使用ssh-copy-id命令來發(fā)送,具體請看這里
需要在Jenkins用戶下開啟ssh互信,在centos7下切換Jenkins用戶時需要注意Jenkins用戶可能是禁止登陸裝填,請自行查看并修改/etc/passwd文件
其實遇到的這些問題解決起來都比較很簡單,但是如何定位到問題所在卻沒那么簡單,尤其是在錯誤提示不明顯的情況下。對于不熟悉Linux的人來說(比如我),更是需要查許多資料,每次都會覺得自己好蠢,orz。
由于偷懶,自動化測試和回滾部分就略去了。
下次再見。