自動化部署(持續(xù)集成 / CI + 持續(xù)交付 / CD)是一個軟件開發(fā)的趨勢,是對 DevOps 的一個很好的幫助發(fā)展推進。今天實踐的是基于 Docker+Jenkins+LNMP + 碼云,實現(xiàn) PHP 代碼的自動化部署過程。
環(huán)境配置
操作系統(tǒng):CentOS Linux release 7.6.1810
Docker 版本:19.03.5
Jenkins 版本:2.204.1
Nginx 版本:1.15.5
PHP 版本:7.2.26
MySQL 版本:8.0.18
Redis 版本:5.0.5
碼云:代碼倉庫
碼云倉庫準備
創(chuàng)建項目倉庫
Jenkins 準備
安裝 ssh 插件
因為構(gòu)建項目式,需要執(zhí)行服務(wù)器的一些shell命令,所以采用ssh登錄方式與遠程服務(wù)器進行通信。
1. 系統(tǒng)管理->插件管理
2. 搜索:ssh,安裝即可
新建工程任務(wù)
任務(wù)名稱不能是中文哦,選擇第一個:Freestyle project 自定義項目
工程任務(wù)配置
1. 源碼管理選擇:git
2. Repository URL:倉庫地址(我的是碼云倉庫)
3. Credentials選擇添加
4. 添加憑據(jù)
5. 配置倉庫私鑰(具體可查看碼云的倉庫密鑰管理幫助)
憑據(jù)配置成功后,選擇上一步憑據(jù)配置的Username即可,這下如果成功連接上倉庫地址,則不會報錯了。
構(gòu)建觸發(fā)器選擇:Github hook trigger for GITScm polling
構(gòu)建環(huán)境:Use secret text(s) or file(s) //私密方式傳輸文件
憑據(jù):選擇指定憑據(jù)git
配置 ssh
1. 系統(tǒng)管理->系統(tǒng)配置
2. 配置遠程服務(wù)器ssh相關(guān)信息
配置構(gòu)建 shell 腳本
構(gòu)建:Execute shell script on remote host using ssh //構(gòu)建時執(zhí)行遠程服務(wù)器shell腳本
1. 填寫SSH site //遠程服務(wù)器ssh登錄
2. Command //shell腳本
備注:
因為代碼自動部署在jenkins的工作空間workspace目錄下,而項目的站點目錄在/data/www下,所以在構(gòu)建時,需要把更新的代碼文件復(fù)制到項目站點下(這里有多種實現(xiàn)方式,這里使用代碼復(fù)制一份,是因為代碼的大小不會占很大的空間,現(xiàn)在很多靜態(tài)資源都放在一些云服務(wù)上了)
最開始使用過軟連接的方式,但因為nginx不支持軟連接的訪問。
配置完畢,點擊保存即可
碼云代碼推送
碼云倉庫修改代碼,然后提交PR到master分支
部署任務(wù)手動構(gòu)建
手動點擊構(gòu)建,即可實現(xiàn)代碼自動化部署
備注:
也可以配置成監(jiān)控到git push就直接自動構(gòu)建(測試環(huán)境建議這樣做)
手動點擊構(gòu)建是為了更好的管理(生產(chǎn)環(huán)境建議這樣做)
如果任務(wù)構(gòu)建失敗,會有報錯信息和紅色標記 //很方便管理
訪問網(wǎng)站
自動化部署任務(wù)構(gòu)建成功后,訪問我們的項目,即可看到修改效果