Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

zhangdeTalk發表於2020-01-13

自動化部署(持續整合/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 實現自動部署

碼雲倉庫準備

建立專案倉庫

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Jenkins準備

安裝ssh外掛

因為構建專案式,需要執行伺服器的一些shell命令,所以採用ssh登入方式與遠端伺服器進行通訊。
1. 系統管理->外掛管理
2. 搜尋:ssh,安裝即可

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

新建工程任務

任務名稱不能是中文哦,選擇第一個:Freestyle project 自定義專案

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

工程任務配置

1. 原始碼管理選擇:git
2. Repository URL:倉庫地址(我的是碼雲倉庫)
3. Credentials選擇新增
4. 新增憑據
5. 配置倉庫私鑰(具體可檢視碼雲的倉庫金鑰管理幫助)

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

憑據配置成功後,選擇上一步憑據配置的Username即可,這下如果成功連線上倉庫地址,則不會報錯了。

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

構建觸發器選擇:Github hook trigger for GITScm polling

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

構建環境:Use secret text(s) or file(s) //私密方式傳輸檔案
憑據:選擇指定憑據git

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

配置ssh

1. 系統管理->系統配置
2. 配置遠端伺服器ssh相關資訊

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

配置構建shell指令碼

構建:Execute shell script on remote host using ssh //構建時執行遠端伺服器shell指令碼
1. 填寫SSH site //遠端伺服器ssh登入
2. Command //shell指令碼
備註:
因為程式碼自動部署在jenkins的工作空間workspace目錄下,而專案的站點目錄在/data/www下,所以在構建時,需要把更新的程式碼檔案複製到專案站點下(這裡有多種實現方式,這裡使用程式碼複製一份,是因為程式碼的大小不會佔很大的空間,現在很多靜態資源都放在一些雲服務上了)
最開始使用過軟連線的方式,但因為nginx不支援軟連線的訪問。

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

配置完畢,點選儲存即可

碼雲程式碼推送

碼雲倉庫修改程式碼,然後提交PR到master分支

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

部署任務手動構建

手動點選構建,即可實現程式碼自動化部署
備註:
也可以配置成監控到git push就直接自動構建(測試環境建議這樣做)
手動點選構建是為了更好的管理(生產環境建議這樣做)

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

如果任務構建失敗,會有報錯資訊和紅色標記 //很方便管理

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

訪問網站

自動化部署任務構建成功後,訪問我們的專案,即可看到修改效果

Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署

本作品採用《CC 協議》,轉載必須註明作者和本文連結

阿德

相關文章