自動化部署(持續整合/CI+持續交付/CD)是一個軟體開發的趨勢,是對DevOps的一個很好的幫助發展推進。今天實踐的是基於Docker+Jenkins+LNMP+碼雲,實現PHP程式碼的自動化部署過程。
環境配置
作業系統: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
碼雲:程式碼倉庫
Docker安裝
請參考這篇文章:CentOS 安裝 docker
Docker安裝LNMP環境
請參考這篇文章:Dockerfile 方式定製 lnmp 環境
Docker安裝Jenkins
請參考這篇文章:Docker 搭建 Jenkins 實現自動部署
碼雲倉庫準備
建立專案倉庫
Jenkins準備
安裝ssh外掛
因為構建專案式,需要執行伺服器的一些shell命令,所以採用ssh登入方式與遠端伺服器進行通訊。
1. 系統管理->外掛管理
2. 搜尋:ssh,安裝即可
新建工程任務
任務名稱不能是中文哦,選擇第一個:Freestyle project 自定義專案
工程任務配置
1. 原始碼管理選擇:git
2. Repository URL:倉庫地址(我的是碼雲倉庫)
3. Credentials選擇新增
4. 新增憑據
5. 配置倉庫私鑰(具體可檢視碼雲的倉庫金鑰管理幫助)
憑據配置成功後,選擇上一步憑據配置的Username即可,這下如果成功連線上倉庫地址,則不會報錯了。
構建觸發器選擇:Github hook trigger for GITScm polling
構建環境:Use secret text(s) or file(s) //私密方式傳輸檔案
憑據:選擇指定憑據git
配置ssh
1. 系統管理->系統配置
2. 配置遠端伺服器ssh相關資訊
配置構建shell指令碼
構建:Execute shell script on remote host using ssh //構建時執行遠端伺服器shell指令碼
1. 填寫SSH site //遠端伺服器ssh登入
2. Command //shell指令碼
備註:
因為程式碼自動部署在jenkins的工作空間workspace目錄下,而專案的站點目錄在/data/www下,所以在構建時,需要把更新的程式碼檔案複製到專案站點下(這裡有多種實現方式,這裡使用程式碼複製一份,是因為程式碼的大小不會佔很大的空間,現在很多靜態資源都放在一些雲服務上了)
最開始使用過軟連線的方式,但因為nginx不支援軟連線的訪問。
配置完畢,點選儲存即可
碼雲程式碼推送
碼雲倉庫修改程式碼,然後提交PR到master分支
部署任務手動構建
手動點選構建,即可實現程式碼自動化部署
備註:
也可以配置成監控到git push就直接自動構建(測試環境建議這樣做)
手動點選構建是為了更好的管理(生產環境建議這樣做)
如果任務構建失敗,會有報錯資訊和紅色標記 //很方便管理
訪問網站
自動化部署任務構建成功後,訪問我們的專案,即可看到修改效果
本作品採用《CC 協議》,轉載必須註明作者和本文連結