最近對自己的博客做了些小的修改,部署的時候需要登錄到服務器拉取代碼后進行構建部署等操作悄泥,由于有些命令有些長,我不太能記得住槽棍,翻找歷史命令時都覺得自己很傻比。一開始想著把命令都記到一個文本里面抬驴,下次就直接復制炼七,再細想,不如此徹底一點布持,做成自動構建和部署豌拙,這樣下次把修改代碼提交到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。
由于偷懶魔市,自動化測試和回滾部分就略去了。
下次再見赵哲。